Compteur en c

Résolu
James56 Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   -  
 kiop -
Bonjour tout le monde,


pour realiser un compteur en image (chaque image corespond a un chiffre de 0 a 9)
j'ai besoin de recuperer chaque chiffre d'un nombre dans une variable.

je m'explique :

pour le nombre 123 par exemple,

je veux recuperer chaque chifre dans une variable :

a= 3
b= 2
c= 1

voili, voilou

si quelqun a une solution ?
A voir également:

6 réponses

Yoan Messages postés 11795 Date d'inscription   Statut Modérateur Dernière intervention   2 331
 
Voilà une idée :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
	int nb=8480963;	// Nombre dont il faut récupérer les chiffres
	int nbn;	// Chiffre récupéré du nombre nb

	
	while(nb)	// Tant que nb est différent de 0
	{
		nbn=nb%10;	// Mettre dans nbn l'unité de nb (dernier chiffre à droite)
		nb-=nbn;
		nb/=10;		// Tronquer nb, par exemple 123456 devient 12345
		printf("nb: %d; nbn: %d\n",nb,nbn);
	}
	return EXIT_SUCCESS;
}


Après, ce qu'il y a dans nbn tu en fais ce que tu veux. Le plus propre serait de les stocker dans un tableau plutôt que de déclarer des variables dynamiques.
En faisant de nb une chaîne ça serait certainement encore plus court :)
0
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
moi j'aurai fait un truc du genre afficher le nombre dans une chaine (avec un sprintf), et récuperer chaque case de la chaine (au pire, on soustrait la valeur ascii de '0' pour convertir du nombre ascii au nombre décimal) ...
0
James56 Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   16
 
merci, c cool davoir repondu.
je te remerci.
sa va bien me servir.
0
mya1 Messages postés 334 Date d'inscription   Statut Membre Dernière intervention   42
 
ou bien tu px mettre les nombres dans un tableau, ou eventuellement un pointeur, compter la longueur et faire le teste, tant que les chiffres sont inferieur à la longueur recupérée dans une variable recupérer chaque chiffre dans une variable initialisée par exemple à a...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
James56 Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   16
 
ducoup j'ai fait sa :


int score =12345;
int digit[6] = {0} ;

    for (g=0 ;g < score; g++)

    {
        digit [4] ++;

        if (digit [4]>9)
        {
            digit [3] ++;
            digit [4] =0;
        }

        if (digit [3] >9)
        {
            digit [2]++;
            digit [3]=0;
        }

        if (digit [2] >9)
        {
            digit [1]++;
            digit [2]=0;
        }

        if (digit [1] >9)
        {
            digit [0]++;
            digit [1]=0;
        }

    }


for (h =0; h <5 ; h++)

    {
        position_pts.x = 700+h*56;
        position_pts.y = 300;

        switch(digit[h])
        {

            case 0:
                zero = IMG_Load("img/0r.PNG");
                SDL_BlitSurface(zero, NULL, ecran, &position_pts);
                break;

            case 1:
                un = IMG_Load("img/1r.PNG");
                SDL_BlitSurface(un, NULL, ecran, &position_pts);
                break;

            case 2:
                deux = IMG_Load("img/2r.PNG");
                SDL_BlitSurface(deux, NULL, ecran, &position_pts);
                break;

            case 3:
                trois = IMG_Load("img/3r.PNG");
                SDL_BlitSurface(trois, NULL, ecran, &position_pts);
                break;

            case 4:
                quatre = IMG_Load("img/4r.PNG");
                SDL_BlitSurface(quatre, NULL, ecran, &position_pts);
                break;

            case 5:
                cinq = IMG_Load("img/5r.PNG");
                SDL_BlitSurface(cinq, NULL, ecran, &position_pts);
                break;

            case 6:
                six = IMG_Load("img/6r.PNG");
                SDL_BlitSurface(six, NULL, ecran, &position_pts);
                break;

            case 7:
                septe = IMG_Load("img/7r.PNG");
                SDL_BlitSurface(septe, NULL, ecran, &position_pts);
                break;

            case 8:
                huite = IMG_Load("img/8r.PNG");
                SDL_BlitSurface(huite, NULL, ecran, &position_pts);
                break;

            case 9:
                neuf = IMG_Load("img/9r.PNG");
                SDL_BlitSurface(neuf, NULL, ecran, &position_pts);
                break;
        }
    }





et voila chaque chifre de la variable score se retrouve dans une case du tableau puis j'interoge chaque case pour savoir ce que je doit afficher.
j'ai tout mis au cas ou sa interesse quelq'un..
merci pour votre aide, sa ma bien servi
0
kiop
 
quand on aime on ne compte pas. Ne soyez pas si mesquin.
0