Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1968 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Problème avec if

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec if

n°1256638
cinezone
Posté le 01-12-2005 à 10:14:23  profilanswer
 

Bonjour,
 
Je dois réaliser un petit programme en C pour apprendre. Le problème se situe au niveau des conditions (trop complexes ?).
 

Code :
  1. void main ()
  2. {
  3. // Declarations
  4. int mois, saison, flag=0;
  5. do {
  6. printf ("1. Janvier\n2. Fevrier\n3. Mars\n4. Avril\n5. Mai\n6. Juin\n7. Juillet\n8. Aout\n9. Septembre\n10. Octobre\n11. Novembre\n12. Decembre" );
  7. printf ("\n\n1. Hiver\n2. Printemps\n3. Ete\n4. Automne" );
  8. printf ("\n\nEntrez le mois et la saison: " );
  9. scanf ("%d %d", &mois, &saison);
  10. if (saison==1 && (mois==1 || mois==2 || mois==3)) {
  11. flag=1;
  12. } else {
  13. if (saison==2 && (mois==4 || mois==5 || mois==6)) {
  14.  flag=1;
  15. } else {
  16.  if (saison==3 && (mois==7 || mois==8 || mois==9)) {
  17.   flag=1;
  18.  } else {
  19.   if (saison==4 && (mois==10 || mois==11 || mois==12)) {
  20.    flag=1;
  21.   } else {
  22.    flag=2;
  23.   }
  24.       }
  25.    }
  26. }
  27. if (saison!=0 && mois!=0) {
  28. switch(flag) {
  29.  case 1 : printf ("\nVous avez entré la bonne réponse" ); break;
  30.     case 2 : printf ("\nLa réponse entrée n'est pas correcte" ); break;
  31. }
  32. getch();
  33. }
  34. } while (mois!=0 && saison!=0);
  35. }


 
Je souhaiterai faire comme condition si saison==1 et (mois==1 ou mois==2 ou mois==3) mais ça ne fonctionne que si je rentre 1 pour saison et 1 pour le mois.
 
Merci d'avance

Message cité 2 fois
Message édité par cinezone le 01-12-2005 à 10:17:07
mood
Publicité
Posté le 01-12-2005 à 10:14:23  profilanswer
 

n°1256670
flo850
moi je
Posté le 01-12-2005 à 10:48:17  profilanswer
 


je te conseille plutot  
 

Code :
  1. if(saison ==1){
  2.    switch(mois){
  3.        case 1: printf("reponse bidon" ); break;
  4.        case 2:
  5.        case 3:
  6.        case 4:
  7.        case 5:
  8.        case 6:
  9.        case 7:
  10.        case 8:
  11.        case 8:
  12.        case 10:
  13.        case 11:
  14.        case 12:
  15.       default :
  16. }
  17. }


---------------

n°1256679
Sve@r
Posté le 01-12-2005 à 11:04:05  profilanswer
 

cinezone a écrit :

Bonjour,
 
Je dois réaliser un petit programme en C pour apprendre. Le problème se situe au niveau des conditions (trop complexes ?).
 
Je souhaiterai faire comme condition si saison==1 et (mois==1 ou mois==2 ou mois==3) mais ça ne fonctionne que si je rentre 1 pour saison et 1 pour le mois.
 
Merci d'avance


 
 
Bon, déjà il faut apprendre que "main" est de type "int" et pas "void".
Ensuite, ton "flag=2" final est inutile puisque si rien ne correspond, flag vaut déjà 0 et cela ne sert à rien de lui mettre 2.
Enfin, un test "if (saison == 1 && (mois == 1 || mois == 2 || mois == 3)" bien que correct peut s'écrire aussi plus simplement "if (saison == 1 && mois >=1 && mois <= 3)"
 
Bon, mis à part ces remarques qui n'influent en rien le fonctionnement, je ne vois pas trop pourquoi ton pgm ne fonctionne pas. Les tests écrits sont corrects.
 
Essaye d'afficher "saison" et "mois" juste après la saisie pour voir ce que le pgm reçoit réellement.
 
PS: c'est pas recommandé un "scanf" avec plusieurs valeurs à la fois. Cela t'impose de saisir sur une ligne un premier nombre suivi d'un espace puis un second nombre et si tu respectes pas le format (le "f" signifie "format" ) imposé, "scanf" pige plus rien...


Message édité par Sve@r le 01-12-2005 à 11:07:02

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1256804
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-12-2005 à 14:05:41  profilanswer
 

cinezone a écrit :

Je dois réaliser un petit programme en C pour apprendre. Le problème se situe au niveau des conditions (trop complexes ?).


La logique est correcte, mais le codage est trop complexe. Essaye ça et pose des questions si tu ne comprends pas.


#include <stdio.h>
 
int main (void)
{
   int fin;
 
   do
   {
      int mois;
      int saison;
      {
         int n;
 
         printf ("1. Janvier\n"
                 "2. Fevrier\n"
                 "3. Mars\n"
                 "4. Avril\n"
                 "5. Mai\n"
                 "6. Juin\n"
                 "7. Juillet\n"
                 "8. Aout\n"
                 "9. Septembre\n"
                 "10. Octobre\n"
                 "11. Novembre\n"
                 "12. Decembre"
                 "\n"
                 "\n"
                 "1. Hiver\n"
                 "2. Printemps\n"
                 "3. Ete\n"
                 "4. Automne\n" );
 
         do
         {
            printf ("\nEntrez le mois et la saison (ou 0 0 pour quitter): " );
            fflush (stdout);
 
            n = scanf ("%d %d", &mois, &saison);
 
            if (n != 2)
            {
               int c;
 
               while ((c = getchar ()) != '\n' && c != EOF)
               {
               }
            }
         }
         while (n != 2);
      }
 
      fin = saison == 0 && mois == 0;
 
      if (!fin)
      {
         int ok;
 
         switch (saison)
         {
         case 1:
            ok = mois == 1 || mois == 2 || mois == 3;
            break;
         case 2:
            ok = mois == 4 || mois == 5 || mois == 6;
            break;
         case 3:
            ok = mois == 7 || mois == 8 || mois == 9;
            break;
         case 4:
            ok = mois == 10 || mois == 11 || mois == 12;
            break;
         default:
            ok = 0;
         }
 
         printf ("%s\n", ok ? "Bonne reponse" : "Reponse incorrecte" );
      }
   }
   while (!fin);
 
   return 0;
}


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Problème avec if

 

Sujets relatifs
probleme de fonction[résolu] Requete MySQL : problème d'affichage par catégorie
Problème idiot avec "_blank"[résolu]probleme operateur matrice [i][j]
Problème de submit sous IE[php] Programmation objet, probleme d'inclusion
j'ai un probleme avec un exo en matlabExécution à distance, problème de répertoire
Problème de bordure en HTMLProblème de Copie (StreamReader)
Plus de sujets relatifs à : Problème avec if


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR