Réunir des nombres

Résolu
cs_vectoriel Messages postés 10 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 1 avril 2006 - 19 mars 2006 à 15:37
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 19 mars 2006 à 23:12
J'aai trois nombres dans un tableau de type char
char tab[2];
tab[0]=1;
tab[1]=2;
tab[2]=3;
et j'aimerais les réunir dans une variable c'est à dire: int a=123;
comment faire?
merci

13 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
19 mars 2006 à 15:53
cosmobob> Ne pas mélanger char et entier!!!!!
Ton affaire ne roule pas!

vectoriel> Fais plutot ca :


int main(
int argc,
char *argv[] )


{



int i;



char tTab[4] = "123";


i = (tTab[2] - 48) + 10*(tTab[1] - 48) + 100*(tTab[0]-48);


printf("%i\n\n", i);



return 0;

}

Shell
3
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
19 mars 2006 à 15:42
salut,
fais ca:
int a = tab[2]+10*(tab[1] + 10*tab[0]);

a+
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 mars 2006 à 16:22
Ben moi je prendrai plutot la solution de cosmobob pourtant...
Puisque on a tab[0]=1; et pas tab[0]='1';
0
cs_vectoriel Messages postés 10 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 1 avril 2006
19 mars 2006 à 16:29
sa ne marche pas dans mon programme je ne sai pas pourquoi y'aurai pas une autre méthode?
0

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

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 mars 2006 à 16:36
Ca doit marcher, donc inutile de chercher une autre méthode. Essaie plutot de voir pourquoi ca ne marche pas. Et dis nous aussi quel est le problème
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 mars 2006 à 17:15
char tab[2];
tab[0]=1;
tab[1]=2;
tab[2]=3; // OVERFLOW ici, on n'est pas chez VB

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
cs_vectoriel Messages postés 10 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 1 avril 2006
19 mars 2006 à 17:21
C'est bon j'ai trouvé mon erreur merci à tous!!
0
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
19 mars 2006 à 17:38
Une bonne vieille methode :
int *UnPointeur = tab;

Si tu veux respecter ta contrainte (un char char digit):
int Nombre = tab[2] + tab[1] * 0x0100 + tab[0] * 0x010000; //Maths nivo primaire
int nombre = tab[2] | tab[1] << 8 | tab[0] << 16; //Pour ceux qui prefere l'electronique
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
19 mars 2006 à 17:48
vecchio> tab[0] = 0 n'est je pense pas ce qu'il souhaitait réellement. Peut etre une erreur de frappe ?
A vectoriel de confirmé.

Dans le cas ou tab[0] = 1, je trouve ca pas trop logique d'utiliser un char[] pour des charactères non imprimables, mais bon....

Shell
0
gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
19 mars 2006 à 18:05
Type char n'est pas utilisé pour représenter un caractère seulement. Il peut représenter la valeur entière comprise entre -128 à 127.
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
19 mars 2006 à 19:00
Il serait bien que tu indiques ton erreur, ainsi que la solution apportée, ca pourra toujours en aider d'autres par la suite.

Shell
0
cs_vectoriel Messages postés 10 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 1 avril 2006
19 mars 2006 à 20:01
Voila le code comme je l'ai inserré:

char tab[2];
int cle2
cle2= (tab[1] - 48) + 10*(tab[0]-48);

sa marche il n'y a aucun probleme. Ce code réuni 2 variables de type char en 1 variable de type int.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 mars 2006 à 23:12
C'est juste un atoi() sans controle de validité des octets de tab[].

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
Rejoignez-nous