Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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

}

Posté(e)

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:

Posté(e)

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

Posté(e)
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.

Posté(e)

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:

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...