Fred0 Posté(e) 1 juin 2004 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
Axtrane Posté(e) 1 juin 2004 Posté(e) 1 juin 2004 Le fait que ton F soit en minuscule (f) ça joue pas ? Citer
Fred0 Posté(e) 1 juin 2004 Auteur 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
Axtrane Posté(e) 1 juin 2004 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
Fred0 Posté(e) 1 juin 2004 Auteur Posté(e) 1 juin 2004 je pense pas vu que 'sexe' est declaré... pis ca marche avec le M !!! :( Citer
KCIStorm Posté(e) 1 juin 2004 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
Fred0 Posté(e) 1 juin 2004 Auteur 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
Axtrane Posté(e) 1 juin 2004 Posté(e) 1 juin 2004 En principe il sert à purger ce qui a été saisi. (stdin) Citer
KCIStorm Posté(e) 1 juin 2004 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
DataWolf Posté(e) 2 juin 2004 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
Fred0 Posté(e) 2 juin 2004 Auteur 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
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.