Traduction d'un algorithme en C

Traduction d'un algorithme en C - C - Programmation

Marsh Posté le 12-06-2009 à 12:32:53    

Bonjours à tous,
 
Je suis en train de réviser pour mon examen de c et je n'arrive pas à traduire un algorithme en C et de le faire fonctionner
Est ce que vous pourriez m'aider à trouver mes erreurs?
 
Le sujet est:
1ere partie:  
http://img198.imageshack.us/img198/6825/safaricransnapz001.jpg
 
2eme partie: (pouvez vous voir l'immage?
 
http://www.boostupload.com/files/image_141_Acrobat_cranSnapz001.jpg
et la fin:
 
http://www.boostupload.com/files/image_093_Acrobat_cranSnapz002.jpg
 
Et voici ce que j'ai traduis (sur devc++):

Code :
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. /*Fonction saisiesure*/
  5. int saisiesure ()
  6. {
  7.     int i, erreur;
  8.     int sortie=0;
  9.     do
  10.     {
  11.         char chaine [50];
  12.         int sortie=0;
  13.         erreur=0;
  14.         scanf ("%s", &chaine);
  15.         for (i=0; i<=(strlen(chaine)-2); i++)
  16.         {
  17.             if (erreur == 0)
  18.             {
  19.                 if ((chaine[i])<48 ||(chaine[i])>57)
  20.                 {
  21.                     erreur=1;
  22.                 }
  23.                 else
  24.                 {
  25.                     sortie+=(chaine[i])-48;
  26.                 }
  27.             }
  28.         }
  29.         if (erreur==1) printf ("erreur recommencez\n" );
  30.     } while (erreur==1);
  31.  
  32.     return (sortie);
  33. }
  34. int main (void)
  35. {
  36.     int nb1, nb2, pgcd, ppcm, temp1, temp2;
  37.     ppcm=0;
  38.     printf("1er nombre\n" );
  39.    
  40.     nb1= saisiesure();
  41.     printf("2er nombre\n" );
  42.    
  43.     nb2= saisiesure();
  44.     if (nb1<nb2)
  45.     {
  46.                 temp1=nb1;
  47.                 temp2=nb2;
  48.     }
  49.     else
  50.     {
  51.         temp2=nb1;
  52.         temp1=nb2;
  53.     }
  54.     do
  55.     {
  56.         pgcd=temp1;
  57.         temp1=temp2%temp1;
  58.         temp2=pgcd;
  59.     } while(temp1>0);
  60.     pgcd=temp2;
  61.     ppcm=(nb1*nb2)/pgcd;
  62.     printf("le pgcd de %i et de %i est %i et le ppcm est %i\n",nb1,nb2,pgcd,ppcm);
  63.     system ("pause" );//Attendre avant de quitter le programme
  64.           return(0);//Fin du programme sans erreur
  65. }


 
Quand je veux compiler, aucune erreur apparaît le exe se lance mais je reste bloqué après avoir rentré le 1er nombre... Une idée?  
 
 
Merci beaucoup!

Message cité 1 fois
Message édité par jowhite le 12-06-2009 à 15:16:54
Reply

Marsh Posté le 12-06-2009 à 12:32:53   

Reply

Marsh Posté le 12-06-2009 à 13:03:57    

tu fait un scanf avant et pendant ta fonction. Le premier scanf ne sert à rien


Message édité par Joel F le 12-06-2009 à 13:04:16
Reply

Marsh Posté le 12-06-2009 à 13:19:48    

Merci de ta réponse.
 
c'est vrai que je ne comprenais pas pourquoi il n'y avait pas de scan dans l'algo!
 
J'ai enlever les lignes 29 et 32 mais il se passe la même chose!

Reply

Marsh Posté le 12-06-2009 à 14:16:11    

pour ton erreur c normal dans tes if et tes while, il faut 2 "=", sinon tu modifie ta valeur et ton test est du coup tjs bon.

Code :
  1. if (c == 0) {...}
 

sinon, je mettrai des accolades pour bien délimiter le if vu qu'il yen a 2 imbriqués...
c'est du chipotage, mais normalement on déclare les variables de sorte que leur portée soit la plus petite possible (mais suffisante évidemment), donc, sauf erreur de ma part, ca serait plus joli comme ca (ca compilera pareil mais c plus conventionnel)  

Code :
  1. int saisiesure ()
  2. {
  3.     int erreur;
  4.     do
  5.     {
  6.         char chaine [50];
  7.         int sortie=0;
  8.         erreur=0;
  9.         scanf ("%s", &chaine);
  10.         for (int i=0; i<=(strlen(chaine)-2); i++)
  11.         {
  12.             if (erreur == 0)
  13.             {
  14.                 if ((chaine[i])<48 ||(chaine[i])>57)
  15.                 {
  16.                     erreur=1;
  17.                 }
  18.                 else
  19.                 {
  20.                     sortie+=(chaine[i])-48;
  21.                 }
  22.             }
  23.         }
  24.         if (erreur==1) printf ("erreur recommencez\n" );
  25.     } while (erreur==1);
  26.    
  27.     return sortie;
  28. }
 

j'ajoute algorithmiquement, le si erreur=faux n'a pas de sens.

 

j'ajoute aussi que les if (erreur==0) peuvent etre remplacés par if (!erreur) etc...

 


[Edit] j'ai édité mon post plusieurs fois...

Message cité 1 fois
Message édité par pataluc le 12-06-2009 à 14:52:44
Reply

Marsh Posté le 12-06-2009 à 14:49:19    

Merci à toi aussi pour ta réponse!
 
J'ai essayé de changer ce que tu as fais (copier coller), cependant, le compilateur m'indique ces erreurs:
Ligne 27:  `sortie' undeclared (first use in this function) --> pourquoi à tu enlevé les variables du débuts?
 
Ligne 10:  'for' loop initial declaration used outside C99 mode  --> tu as rajouté "int"? je ne sais pas pourquoi?
 
Sinon, après avoir corrigé les erreurs marqué par le compilateur, il n'y a pas d'amélioration.
 
J'edit mon post
Merci de ton aide!


Message édité par jowhite le 12-06-2009 à 14:53:54
Reply

Marsh Posté le 12-06-2009 à 14:52:46    

ah oui autant pour moi, en fait j'ai rentré sortie dans la boucle parce qu'elle n'étiat pas utilisée ailleurs, et du coup ca servait à rien de le définir aussi haut, puis ensuite je me suis apercu qu'il manquait le return, mais j'ai oublié de ressortir la variable sortie:

Code :
  1. int saisiesure ()
  2. {
  3.     int erreur;
  4.     int sortie=0;
  5.     do
  6.     {
  7.         char chaine [50];
  8.         erreur=0;
  9.         scanf ("%s", &chaine);
  10.         for (int i=0; i<=(strlen(chaine)-2); i++)
  11.         {
  12.             if (erreur == 0)
  13.             {
  14.                 if ((chaine[i])<48 ||(chaine[i])>57)
  15.                 {
  16.                     erreur=1;
  17.                 }
  18.                 else
  19.                 {
  20.                     sortie+=(chaine[i])-48;
  21.                 }
  22.             }
  23.         }
  24.         if (erreur==1) printf ("erreur recommencez\n" );
  25.     } while (erreur==1);
  26.    
  27.     return sortie;
  28. }


Message édité par pataluc le 12-06-2009 à 15:08:49
Reply

Marsh Posté le 12-06-2009 à 14:56:05    

Okay mais pour la ligne 10? ça veut dire quoi?

Reply

Marsh Posté le 12-06-2009 à 15:01:18    

En fait tu veux définir "i" juste avant de l'utiliser? Mais le compilateur n'accepte pas!
 
Sinon j'ai toujours le même affichage quand je lance le exe

Message cité 1 fois
Message édité par jowhite le 12-06-2009 à 15:02:01
Reply

Marsh Posté le 12-06-2009 à 15:04:18    

Aha il y a du progrès, le deuxieme nombre est demandé!
Mais même problème ensuite (j'avais oublier de mettre sortie=0)!
Je suppose que j'ai des erreurs vers la fin alors?
 
Merci à toi!


Message édité par jowhite le 12-06-2009 à 15:05:36
Reply

Marsh Posté le 12-06-2009 à 15:10:41    

jowhite a écrit :

En fait tu veux définir "i" juste avant de l'utiliser? Mais le compilateur n'accepte pas!

ah? dsl c'est loin le c j'ai pris les habitudes du java et du php...

Reply

Marsh Posté le 12-06-2009 à 15:10:41   

Reply

Marsh Posté le 12-06-2009 à 15:10:58    

bah t'en fais pas!Moi je débute juste de toute façon!
 
Sinon, j'ai l'impression que ce n'est pas ça en fait!
Quand je saisie le nombre 3 pour nb1, rien ne se passe;
Par contre, si je choisi 10 il me demande le deuxieme nombre, si je rechoisi 10, le .exe plante...

Message cité 1 fois
Message édité par jowhite le 12-06-2009 à 15:12:05
Reply

Marsh Posté le 12-06-2009 à 15:12:07    

la tu vas avoir un problème tu définis 2 fois sortie...

Reply

Marsh Posté le 12-06-2009 à 15:12:58    

j'suis désolé en plus je vois pas les 2 dernières images de ton premier post (proxy de ma boite) du coup je connais pas le problème dans son ensemble...

Reply

Marsh Posté le 12-06-2009 à 15:14:34    

pataluc a écrit :


j'ajoute algorithmiquement, le si erreur=faux n'a pas de sens.


 
C'est juste pour pas que, en cas d'erreur à un endroit de la chaine, le bloc if derrière ne soit parcouru à chaque fois jusqu'à la sortie du bloc for.
 
 
Sinon, pour jowhite, effectivement, la grosse erreur était l'absence de sortie=0 dans ton bloc do, qui fait que s'il y a une erreur, il va te redemander une saisie, qui va être ajoutée à la valeur de "sortie" donnée pendant le premier parcours ayant généré l'erreur.
Mais du coup, ça devrait marcher pour les deux nombres, pas juste pour le premier, c'est bizarre...


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 12-06-2009 à 15:15:59    

ah mince!
Je vais changer ça, comment je peux faire pour que tu puisse voir le reste du problème?

Reply

Marsh Posté le 12-06-2009 à 15:16:40    

jowhite a écrit :

bah t'en fais pas!Moi je débute juste de toute façon!
 
Sinon, j'ai l'impression que ce n'est pas ça en fait!
Quand je saisie le nombre 3 pour nb1, rien ne se passe;
Par contre, si je choisi 10 il me demande le deuxieme nombre, si je rechoisi 10, le .exe plante...


 
Ca viendrait pas de ton "(strlen(chaine)-2)" qui fait que si tu entres un nombre à un seul digit, il ne passe pas dans la boucle ?


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 12-06-2009 à 15:16:54    

Turkleton a écrit :

C'est juste pour pas que, en cas d'erreur à un endroit de la chaine, le bloc if derrière ne soit parcouru à chaque fois jusqu'à la sortie du bloc for.


 
effectivement. (j'ai pas les yeux en face des trous auj moi...) mais dans ce cas la il faut pas mettre un for mais un while ca serait plus bô.

Reply

Marsh Posté le 12-06-2009 à 15:19:17    

pataluc a écrit :


 
effectivement. (j'ai pas les yeux en face des trous auj moi...) mais dans ce cas la il faut pas mettre un for mais un while ca serait plus bô.


 
Yep, j'y ai pensé aussi, mais vu qu'il est censé traduire l'algo déjà écrit, faut pas modifier !  ;)  
En même temps, l'algo est pourri, sans le sortie=0 dans le do...while, en cas d'erreur, sortie va pas avoir la bonne valeur...


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 12-06-2009 à 15:19:21    

Je vais être franc avec vous,
Je suis en école de biologie et les cours de C qu'on a eu c'est genre 6H (+6h d'algo)... Je galère donc un peu!

Message cité 1 fois
Message édité par jowhite le 12-06-2009 à 15:20:48
Reply

Marsh Posté le 12-06-2009 à 15:22:00    

Turkleton, toi non plus tu ne peux pas voir le reste?

Reply

Marsh Posté le 12-06-2009 à 15:23:25    

jowhite a écrit :

Je vais être franc avec vous,
Je suis en école de biologie et les cours de C qu'on a eu c'est genre 6H (+6h d'algo)... Je galère donc un peu!


Tu t'en sors pas mal pour si peu de formation. Peux-tu reposter l'intégralité de ton code, qu'on voit où tu en es rendu ?
 
EDIT : si, je vois bien le reste, mais je n'ai pas trop regardé, ça a l'air bon.

Message cité 1 fois
Message édité par Turkleton le 12-06-2009 à 15:24:00

---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 12-06-2009 à 15:32:49    

Oups, je dis n'importe quoi pour le "sortie=0" dans le do, il est bien dans l'algorithme et dans le premier code de jowhite, je me suis juste basé sur le code de pataluc, où il ne figure pas. Toutes mes confuses à l'auteur de l'algo !


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 12-06-2009 à 15:32:56    

Turkleton a écrit :


Tu t'en sors pas mal pour si peu de formation.

+1 j'avais dans ma formation des gars qui en bac+5 math appliquées et info n'auraient pas su faire ca. ^^
 


Message édité par pataluc le 12-06-2009 à 15:33:11
Reply

Marsh Posté le 12-06-2009 à 15:33:05    

Arf je suis bête, j'ai oublier de retirer le int sortie=0 de la boucle, en faisant ça ça marche!!!
 
Voici le tout:

Code :
  1. int saisiesure (void)
  2. {
  3.     int i, erreur;
  4.     int sortie=0;
  5.     do
  6.     {
  7.         char chaine [50];
  8.         sortie=0;
  9.         erreur=0;
  10.         scanf ("%s", &chaine);
  11.         for ( i=0; i<=(strlen(chaine)-2); i++)
  12.         {
  13.             if (erreur == 0)
  14.             {
  15.                 if ((chaine[i])<48 ||(chaine[i])>57)
  16.                 {
  17.                     erreur=1;
  18.                 }
  19.                 else
  20.                 {
  21.                     sortie+=(chaine[i])-48;
  22.                 }
  23.             }
  24.         }
  25.         if (erreur==1) printf ("erreur recommencez\n" );
  26.     } while (erreur==1);
  27.  
  28.     return (sortie);
  29. }
  30. int main (void)
  31. {
  32.     int nb1, nb2, pgcd, ppcm, temp1, temp2;
  33.     ppcm=0;
  34.     printf("1er nombre\n" );
  35.     nb1= saisiesure();
  36.     printf("2er nombre\n" );
  37.     nb2= saisiesure();
  38.     if (nb1<nb2)
  39.     {
  40.                 temp1=nb1;
  41.                 temp2=nb2;
  42.     }
  43.     else
  44.     {
  45.         temp2=nb1;
  46.         temp1=nb2;
  47.     }
  48.     do
  49.     {
  50.         pgcd=temp1;
  51.         temp1=temp2%temp1;
  52.         temp2=pgcd;
  53.     } while(temp1>0);
  54.     pgcd=temp2;
  55.     ppcm=(nb1*nb2)/pgcd;
  56.     printf("le pgcd de %i et de %i est %i et le ppcm est %i\n",nb1,nb2,pgcd,ppcm);
  57.     system ("pause" );//Attendre avant de quitter le programme
  58.           return(0);//Fin du programme sans erreur
  59. }


 

Citation :

1 j'avais dans ma formation des gars qui en bac+5 math appliquées et info n'auraient pas su faire ca.

A ce point? ^^

Message cité 1 fois
Message édité par jowhite le 12-06-2009 à 15:50:44
Reply

Marsh Posté le 12-06-2009 à 15:37:22    

jowhite a écrit :

Arf je suis bête, j'ai oublier de retirer le int sortie=0 de la boucle, en faisant ça ça marche!!!


Rhaaa non, justement ! T'as pas lu mes 5 derniers posts ???  :D  
 
En fait (faudrait vraiment que tu redonnes le code en entier par contre), si tu enlèves le "sortie=0" de la boucle do...while, à chaque fois que tu vas entrer une saisie erronée, il va garder en mémoire ce qui a précédemment été mis dans ta variable sortie.
 
Ex : je rentre "1a2" dans la première saisie. Il va mettre le "1" dans sortie, puis va détecter une erreur et redemander une saisie. Je saisis "12" cette fois, et ben il va me l'ajouter au "1" qu'il y a déjà dans "sortie", et me donner donc "13".


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 12-06-2009 à 15:39:47    

Ah mince c'était l'autre qu'il fallait enlever?!
 
Quand j'enlève celui qui n'est pas dans la boucle, le compilateur me dit que la variable sortir n'est pas défini
 

Message cité 1 fois
Message édité par jowhite le 12-06-2009 à 15:42:19
Reply

Marsh Posté le 12-06-2009 à 15:44:49    

il faut que tu laisse le "int sortie" avant le "do", mais que tu remette sortie à 0 après le do...

Reply

Marsh Posté le 12-06-2009 à 15:45:17    

jowhite a écrit :

Ah mince c'était l'autre qu'il fallait enlever!


Plus simplement, j'aurais laissé les deux, mais j'aurais juste enlevé le "int" devant celui qui est dans la boucle do/while, pour que sortie ne soit pas déclaré deux fois. Après, qu'une valeur lui soit affectée plusieurs fois, c'est pas grave, c'est même tout à fait normal.
 
Je ne sais pas ce qu'on t'a dit mais moi en C, je déclare toujours toutes mes variables au début de ma procédure. Ça évite ce genre de désagréments, et de ne plus savoir si une variable a été déclarée ou pas, et si oui, où.
 
EDIT : rha grillé

Message cité 1 fois
Message édité par Turkleton le 12-06-2009 à 15:45:44

---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 12-06-2009 à 15:48:05    

Ah okay, mais le truc:
J'ai entré 15 pour le premier, et 20 pour le deuxieme et il me sort:
le pgcd de 4199552 et de 4199552 est de 4199552 et le ppcm est 262

Reply

Marsh Posté le 12-06-2009 à 15:49:39    

Turkleton a écrit :


 
 
Je ne sais pas ce qu'on t'a dit mais moi en C, je déclare toujours toutes mes variables au début de ma procédure. Ça évite ce genre de désagréments, et de ne plus savoir si une variable a été déclarée ou pas, et si oui, où.
 


 
Oui c'est ce que mon prof m'a dit

Reply

Marsh Posté le 12-06-2009 à 15:51:23    

jowhite a écrit :

Ah okay, mais le truc:
J'ai entré 15 pour le premier, et 20 pour le deuxieme et il me sort:
le pgcd de 4199552 et de 4199552 est de 4199552 et le ppcm est 262


 
Haha, ça avance en tout cas !  :sarcastic:  
Code complet et corrigé please


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 12-06-2009 à 15:51:59    

Bon c'est bizarre, avec ce code:

Code :
  1. i#include <conio.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. /*Fonction saisiesure*/
  5. int saisiesure (void)
  6. {
  7.     int i, erreur;
  8.     int sortie=0;
  9.     do
  10.     {
  11.         char chaine [50];
  12.          sortie=0;
  13.         erreur=0;
  14.         scanf ("%s", &chaine);
  15.         for ( i=0; i<=(strlen(chaine)-2); i++)
  16.         {
  17.             if (erreur == 0)
  18.             {
  19.                 if ((chaine[i])<48 ||(chaine[i])>57)
  20.                 {
  21.                     erreur=1;
  22.                 }
  23.                 else
  24.                 {
  25.                     sortie+=(chaine[i])-48;
  26.                 }
  27.             }
  28.         }
  29.         if (erreur==1) printf ("erreur recommencez\n" );
  30.     } while (erreur==1);
  31.  
  32.     return (sortie);
  33. }
  34. int main (void)
  35. {
  36.     int nb1, nb2, pgcd, ppcm, temp1, temp2;
  37.     ppcm=0;
  38.     printf("1er nombre\n" );
  39.     nb1= saisiesure();
  40.     printf("2er nombre\n" );
  41.     nb2= saisiesure();
  42.     if (nb1<nb2)
  43.     {
  44.                 temp1=nb1;
  45.                 temp2=nb2;
  46.     }
  47.     else
  48.     {
  49.         temp2=nb1;
  50.         temp1=nb2;
  51.     }
  52.     do
  53.     {
  54.         pgcd=temp1;
  55.         temp1=temp2%temp1;
  56.         temp2=pgcd;
  57.     } while(temp1>0);
  58.     pgcd=temp2;
  59.     ppcm=(nb1*nb2)/pgcd;
  60.     printf("le pgcd de %d et de %d est %d et le ppcm est %d\n",nb1,nb2,pgcd,ppcm);
  61.     system ("pause" );//Attendre avant de quitter le programme
  62.           return(0);//Fin du programme sans erreur
  63. }


 
 
 
 j'obtiens :"le pgcd de 1 et de 2 est de 1 et le ppcm est 2"


Message édité par jowhite le 12-06-2009 à 16:01:53
Reply

Marsh Posté le 12-06-2009 à 15:54:11    

moi je comprends pas cette manière de lire un nombre... ya un transtypage qui va pas marcher la non? et puis l'algo s'il lit 15, il voit 1 et ensuite il ajoute 5, ca fait pas 15 mais 6, non?

Reply

Marsh Posté le 12-06-2009 à 15:55:03    

Rhooo, la grosse erreur de débutant que j'avais même pas vue, honte à moi  :sweat:  
 
Dans un printf, pour afficher un int, il faut mettre %d, et pas %i (je sais, c'est pas logique) !
 
Allez, prochain essai, tu nous fait péter le champagne de la victoire de l'homme sur le code  [:harry rausey]


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 12-06-2009 à 15:57:43    

pataluc a écrit :

moi je comprends pas cette manière de lire un nombre... ya un transtypage qui va pas marcher la non? et puis l'algo s'il lit 15, il voit 1 et ensuite il ajoute 5, ca fait pas 15 mais 6, non?


 
Non, j'ai mis du temps à comprendre aussi, mais il semblerait que chaine[x] donne une valeur en ascii si affectée à un int (comme "sortie" ici), je ne savais pas ça mais ça peut être bien pratique. Du coup, 1=code ascii 49 donc,  sortie+=(49)-48; va bien donner 1
 
EDIT : ...mais ça change pas le fait que tu aies raison, le boulay moi

Message cité 1 fois
Message édité par Turkleton le 12-06-2009 à 15:58:31

---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 12-06-2009 à 15:58:32    

Turkleton a écrit :

 

Non, j'ai mis du temps à comprendre aussi, mais il semblerait que chaine[x] donne une valeur en ascii si affectée à un int (comme "sortie" ici), je ne savais pas ça mais ça peut être bien pratique. Du coup, 1=code ascii 49 donc,  sortie+=(49)-48; va bien donner 1


je suis d'accord, ca marche pour un nombre à 1 chiffre, mais sinon?

 

EDIT: j'avais pas vu ton edit... ^^

 

du coup pour moi faudrait multiplier sortie par 10 à chaque itération du for... sauf si ya un mécanisme en c que je connais pas et qui fait de la magie...


Message édité par pataluc le 12-06-2009 à 15:59:47
Reply

Marsh Posté le 12-06-2009 à 15:59:48    

Arf sorry mais c'est toujours pas ça!
 
J'ai le même résultat!
 
En tous cas, merci , on touche au but!


Message édité par jowhite le 12-06-2009 à 16:01:14
Reply

Marsh Posté le 12-06-2009 à 16:00:00    

ca donne quoi?

Reply

Marsh Posté le 12-06-2009 à 16:03:05    

Le même résultat

Reply

Marsh Posté le 12-06-2009 à 16:15:29    

jowhite a écrit :

Le même résultat


Honnêtement, pour moi, ton code me semble bon. Si ça ne retourne pas les valeurs prévues, tant pis, le sujet étant juste de traduire l'algorithme qu'on t'a donné, ce qui est fait. Si l'algo ne fonctionne pas à la base, c'est pas ton problème  :ange:  
 
Après, si tu veux vraiment le faire fonctionner, je pense qu'il va falloir modifier l'algo de base, notamment la ligne "sortie+=(chaine[i])-48;" qui, comme l'a noté pataluc, ne donne pas le résultat escompté.
 
EDIT : je viens de voir que tu avais toujours ton "strlen(chaine)-2" dans ton instruction for. Pourquoi "-2" ? Ça devrait être "-1". Si tu entres un nombre de deux chiffres dans ton scanf, strlen(chaine) va te donner la valeur 2 (il ne compte pas le /0 de fin). Donc il ne va y avoir qu'une seule itération de ta boucle for alors qu'il y a deux chiffres à traiter.


Message édité par Turkleton le 12-06-2009 à 16:41:39

---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed