Aller au contenu

CorrigEZ mon code svp... (en C)


Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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();

}

Lien vers le commentaire
Partager sur d’autres sites

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:

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...