Programme en c
--
lovely flower 1986
salut tout le monde ,
je voudrais avoir la solution de se programme ,
un programme qui simule le fonctionement de la fonction "atoi".
lovely flower 1986
salut tout le monde ,
je voudrais avoir la solution de se programme ,
un programme qui simule le fonctionement de la fonction "atoi".
4 réponses
-
C'est dans le même genre que ce qu'on a fait ici :
https://forums.commentcamarche.net/forum/affich-2193642-langage-c
Sauf que là tu t'intéresse à la lecture d'un mot seulement. Parcours chaque caractère de ce mot et tant que c'est à chiffre, tu multiplie par 10 le résultat précedemment calculé et tu ajoute le chiffre que tu viens de lire.unsigned int read_unsigned_int(char *mot){ unsigned short int n=0; unsigned int res=0; while( sscanf(mot,"%d",&n) == 1 ){ res*=10; res+=n; } return res; }
Encore une fois c'est l'idée que je te donne je n'ai pas testé si ça marchait... Je te laisse peaufiner tout ça.
Bonne chance -
En fait je viens de me rendre compte que c'était faux parce que le %d va lire d'un coup le nombre. Il faut faire un truc à base de getc (à la place du sscanf) en fait, et après repartir du code ascii pour le convertir le char en entier.
Sinon le reste est pareil.
Merci du compliment lami20j, je suis flattée ;)
Bonne chance -
Je dis n'importe quoi ce matin, vu qu'on fait du atoi on ne fait pas de getc ou de scanf... Oulala heureusement c'est le week-end ;-)
http://www.manpagez.com/missing.php#include <string.h> #define ERR 0 unsigned short int ctoi(char c){ if(c>=48 && c <=57){ return c-48; // conversion ascii --> decimal } printf("ctoi : caractère %c invalide... retourne %d\n",c,ERR); return ERR; } unsigned int read_unsigned_int(char *mot){ unsigned int i,res=0,len=strlen(mot); unsigned short int n; for(i=0;i<len;++i){ res*=10; n=ctoi(mot[i]); if(n==ERR){ printf("atoi : chaine %s invalide... retourne %d\n",mot,ERR); return ERR; } res+=n; } return res; }
En espérant m'être pas trop craquée cette fois-ci ;-)
Bonne chance -
en fait pour ERR faut prendre une valeur qui n'est pas dans {0,...9}. En fait on n'a qu'à prendre ERR == -1 et retourner des entiers signés pour les deux fonctions comme ça c'est reglé ;)