Fred0 Posté(e) 1 juin 2004 Share Posté(e) 1 juin 2004 Salut :biere: Voila j'ai commencé le C et j'ai fait un ptit programme pour m'amuser... Voici le code : (édité)#include <stdio.h> main(void) { char name[50]; char sexe; int i; printf("Entrez votre prenom : "); scanf("%s", name); printf("Votre sexe (M ou F) : "); for (i = 1 ; i > 0 ; i++) { if (sexe = getchar() == 'F') { printf("Bonjour, madame %s.\n", name); break; } else if (sexe = getchar() == 'M') { printf("Bonjour, monsieur %s.\n", name); break; } else { printf("M ou F svp : "); } } printf("Pour quitter, appuyez sur une touche."); getch(); } Le problème : Je rentre le nom, pas de problèmes, mais qd je veux choisir le sexe (M ou F), il accepte que le M !!! Je suppose que c'est un problème avec la condition. J'ai essayé avec 'else if' mais ca ne va pas non plus... Merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Axtrane Posté(e) 1 juin 2004 Share Posté(e) 1 juin 2004 Le fait que ton F soit en minuscule (f) ça joue pas ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fred0 Posté(e) 1 juin 2004 Auteur Share Posté(e) 1 juin 2004 Euh nan normalement il est majuscule mais j'avais mis en minuscule pour voir si ca changeait qqchose...dsl Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Axtrane Posté(e) 1 juin 2004 Share Posté(e) 1 juin 2004 J'ai plus trop mes cours en tête, mais peut être que tu dois déclarer M et F au début ? j'ai jamais su faire un code complet mais j'étais bon pour corriger lol Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fred0 Posté(e) 1 juin 2004 Auteur Share Posté(e) 1 juin 2004 je pense pas vu que 'sexe' est declaré... pis ca marche avec le M !!! :( Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
KCIStorm Posté(e) 1 juin 2004 Share Posté(e) 1 juin 2004 Un code C optimisé n'utilise qu'UN point de sortie... --> break(); pas bon! :o Honnetement ca a l'air correct... sache que getchar n'affiche pas a l'ecran... donc fais un pas à pas pour voir ce qui foire... si dans ta condition tu met 'M' ou 'F' la lettre tapée doit être en majuscule ! (il ne prend pas le reste)... bref revérifie l'ensemble de ta logique.. elle n'est pas des meilleures... (c'est ce que mon prof me disait souvent ca ! lol) Essaye ceci....attention j'ai pas tester et depuis le tps que je ne fais plus de c... #include <stdio.h> #include <conio.h> main() { int i=1; char name[50]; char sexe; clrscr(); printf("Entrez votre prenom : "); scanf("%s", name); printf("Votre sexe (M ou F) : "); while (i != 0) { fflush (stdin); scanf ("%c",&sexe); if (sexe == 'F') { printf("Bonjour, madame %s.\n", name); i=0; } else { fflush (stdin); if (sexe == 'M') { printf("Bonjour, monsieur %s.\n", name); i=0; } else { printf("M ou F svp : "); } } } printf("Pour quitter, appuyez sur une touche."); getch(); } Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fred0 Posté(e) 1 juin 2004 Auteur Share Posté(e) 1 juin 2004 Ahh merci ca marche... J'ai compris pour break(); mais j'comprend pas le 'fflush(stdin);' donc si tu pouvais me dire a quoi ca sert ce serait sympa :) :biere: Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Axtrane Posté(e) 1 juin 2004 Share Posté(e) 1 juin 2004 En principe il sert à purger ce qui a été saisi. (stdin) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
KCIStorm Posté(e) 1 juin 2004 Share Posté(e) 1 juin 2004 En fait scanf est source d'erreur de tps en tps si tu ne purges pas le tampon mémoire... fflush permet de purger ce tampon et stdin signifie que c le tampon du clavier qu'on purge... je sais pas si c'est clair... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
DataWolf Posté(e) 2 juin 2004 Share Posté(e) 2 juin 2004 Je rentre le nom, pas de problèmes, mais qd je veux choisir le sexe (M ou F), il accepte que le M !!! As-tu relancé le programme et testé directement le 'F' ? A mon humble avis tu avais d'abord testé le 'M' et oublié de purger ton flux. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fred0 Posté(e) 2 juin 2004 Auteur Share Posté(e) 2 juin 2004 Non j'avais essayé directement le F et ca allait pas non plus mais j'ai compris mon erreur, j'avais ce schema ci pour une condition : if (...) { ... } if (...) { ... } else { ... } alors qu'apparament c'est : if (...) { ... } else { if (...) { ... } else { ... } } Merci qd meme a tt ceux qui ont répondu :biere: Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.