Prendre chaque chiffre d'un int

minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 - 23 août 2004 à 14:13
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 24 août 2004 à 08:52
Bonjour tout le monde !
Voilà ma fonction :

int fonction(int binaire)
{
int variable = 0;
for(int i=0;i<=sizeof(binaire);i++)
{
binaire[i] += ......;
}
return variable;
}

int main(....... etc :-D

mon blème c'est qu'il met :
Invalid Inderiection sur la ligne binaire[i]...

Donc si qqu à la soluce merci !

37 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 août 2004 à 14:21
c'est normal tu deference une variable (illogique)

tu comptait faire quoi avec ca ?

for(int i=0;i<=sizeof(binaire);i++)
{
binaire[i] += ......;
}

converti ton entier en chaine de caractere avec sprintf ou itoa
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 août 2004 à 14:22
binaire[i] faut un tableau pour indexer.

ciao...
BruNews, Admin CS, MVP Visual C++
0
pinderlot Messages postés 59 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 1 septembre 2004 1
23 août 2004 à 16:38
Si je comprend bien, tu as un nombre (disons 12458) et tu souhaites pouvoir manipuler chaque chiffre 1 ou 2 ou 4 ou 5 ou 8.
Il faut passer par une autre variable intermédiaire à mon sens.
Un tableau qui contient chaque chiffre.
-----------------------------------------------
Tout ce qui ne tue pas rend plus fort !
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 août 2004 à 16:59
ou convertir en char*
0

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

Posez votre question
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
23 août 2004 à 20:09
Donc j'ai utilisé le sprintf, mais là, les chiffre sont en char, je fait comment pour les comprer à un int ?????
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 août 2004 à 20:25
soustrait '0'

char c;

...

if( c - '0' == 5 ) ...

mais si tu compte faire beaucoup de comparaison, vaut mieux convertir en tableau d'int representant les chiffres
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
23 août 2004 à 22:12
ben je peut pas, mon code ça fait : sprintf(char, "%d", binaire);
Donc après je prend chaque chiffre dans char (C un autre nom dans mon code), seulement il le prend en tant que type char pas en int. et ce que tu a mi djl ne marche pas. Il ne prend pas la comparaison, alors une autre idée ?
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 août 2004 à 22:18
sprintf(char, "%d", binaire);

if( char[2] - '0' == 5 ) ...

aucun probleme, c'est du C

"Il ne prend pas la comparaison" comment ca ? ca compile pas ??

sinon convertis ton entier en tableau de chiffre (de type int ou unsigned)
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
23 août 2004 à 22:23
ben en fait if(char[3] == "1")....
ça ne marche pas, il passe au else, et j'ai essayé tout les solution ( à ma connaissance). E t sans succès !
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 août 2004 à 22:29
if(char[3] == "1") ?? tu compare un caractere avec une chaine

if( char[3] - '0' == 1 ) ou if( char[3] == 1 + '0' )
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
23 août 2004 à 22:33
ça marche pas non plus ton truc, c'est désespérant !
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 août 2004 à 22:38
j'ai essayé ca marche sans probleme, tu devrais montrer le code complet, ta surement oublié quelque chose

on pourrais aussi faire

char *p;

p = itoa( binaire, char, 10);
while( *p ) *p++ -= '0';
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
23 août 2004 à 22:39
ça sert à quoi itoa() ?
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 août 2004 à 22:42
à convertir un entier en chaine de caractere, pas standard mais deja plus performant, mais le mieux c'est de faire toi meme la fonction, ca sera nettement plus performant
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
23 août 2004 à 22:45
Bon voilà mon code, je ne voulais pas le dévoilé de peur qu'il ne marche pas :-s, c'est un code qui sert à convertir un code binaire en decimal :

int bin_dec(int binaire)
{
int decimal = 0;
char cbinaire[256];
sprintf(cbinaire, "%d", binaire);
for(int i=0;i<=strlen(cbinaire)-1;i++)
{
if (cbinaire[i] == 1) // ici le problème
{
decimal += pow(2, i);
}
}
return decimal;
}

j'ai indiquer où était le prob, je n'arrive pas à faire la comparaison correctement
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 août 2004 à 22:51
ne fais jamais for(int i=0;i<=strlen(cbinaire)-1;i++), trop penalisant en performance

je comprend pas comment et pourquoi tu veux covertir un code binaire en decimale ??

je sais pas si tu as compris mais tout est binaire, c'est juste une histoire de formatage lorsque tu imprime / saisis la variable
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
23 août 2004 à 22:53
non mais c'est pour faire un convertisseur !!!!!
A la place de mon for(....)
je met quoi?
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 août 2004 à 22:59
int n;
char number[100];
...

itoa( n, number, 2 ); // pour convertir en base 2 (binaire)

pour le for,

size_t size;
...

size = strlen( char );
for( i = 0; i < size; i++) ...
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
23 août 2004 à 23:01
oui mais moi c'est déjà du binaire, je veut le mettre en décimal !
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 août 2004 à 23:04
ben itoa( n, number, 10 );

c'est quoi le prototype de ta fonction ?
0
Rejoignez-nous