Jump to content
Forums BHmag.fr
Sign in to follow this  
Fred0

CorrigEZ mon code svp... (en C)

Recommended Posts

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

Share this post


Link to post
Share on other sites

Euh nan normalement il est majuscule mais j'avais mis en minuscule pour voir si ca changeait qqchose...dsl

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other 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();

}

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...