Probleme avec les if et else

Messages postés
3
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
6 septembre 2006
-
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
[mailto:alexandre@citiescope.com alexfr34]

Bonjour, j'ai perdu le fil avec le chat je ne comprends pas trop le mode d'emploi quelqu'un peut il m'aider voici mon code :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>





int main(int argc, char *argv[])
{
    long* memoireAllouee = NULL;





    memoireAllouee = malloc(sizeof(long));
    if (memoireAllouee == NULL)
    {
        exit(0);
    } double resultat 0, maternelle 0, primaire = 0, allergies = 0, resultate = 0, livre 0, lundim 0 ;





  printf("Le programme des Recre fruitees !\n\n     ");





  printf("Nombre d enfants en Maternelle : ");
  scanf("%ld", &maternelle);
  printf("     Nombre d enfants en Primaire : ");
  scanf("%ld", &primaire);
  printf("     Avez vous des enfants allergiques si oui combien ? ");
  scanf("%ld", &allergies);
  resultat = maternelle + primaire - allergies;
  printf ("     Nombre de fruits a livrer sans les allergies %ld \n", resultat);
  printf ("     Fruit de remplacement : ");
  scanf("%ld", &resultate);
char nom [100+1];
  gets(nom);
  printf("     Nombre de fruits a remplacer %1d\n", allergies);
  getchar();
  printf("     A livrer %1d Fruits de remplacement plus " , allergies);
  printf(" %ld Fruits ", resultat);





  livre = allergies + resultat;
  printf("  Soit %ld Fruits \n", livre);
  getchar();
        printf("Lundi Matin : ");
        scanf("%ld ", &lundim);
            if ("ananas" ||"banane" ||"figue" ||"kiwi"||"melon"||"nectarine" ||"orange"||
            "pasteque"||"pecheb"||"pechej");
            if ("ananas") {  printf(" Ananas 1 kg a 1 kg 2 calibre B \n"); }
            return 0;
            if ("banane") {  printf(" Banane - 200 gr couleur 5 \n"); }
            return 0;//ici cela bloque
            if (  printf(" Figue calibre 28- 30  \n") ) ;
            return 0;
            if (  printf(" Kiwi calibre 33 \n") ) ;
            return 0;
            if (  printf(" Melon calibre 12 \n") ) ;
            return 0;
            if (  printf(" Nectarine calibre A \n") ) ;
            return 0;
            if (  printf(" Orange calibre 5 \n") ) ;
            return 0;
            if (  printf(" Pastèque calibre 4 sans pépin \n") ) ;
            return 0;
            if (  printf(" Pêche Blanche calibre A \n") ) ;
            return 0;
            if (  printf(" Pêche Jaune calibre A \n") ) ;
            return 0;







  system("PAUSE");
  return 0;
}


mon probleme lorsque j'interroge un fruit précis j'ai toutes réponse qui s'affiche
Merci par avance de votre aide

5 réponses

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
if ( CONDITION BOOLEENE )
{
       Instruction si condition vraie
}
else
{
    Instruction si condition fausse
}

Les accolades ne sont obligatoires que si les instructions correspondantes se résument en faite à une seule instruction ! une ligne quoi :)

ULARGE_INTEGERJokyQi=QI("Joky"
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Gaffe à ne pas 'enduire' d'erreurs, IF teste 0 ou !=0, que soit un retour booleen ou quoi que ce soit d'autre.
Evident pour les habitués mais pas forcément pour un débutant (je viens de voir le cas alors...).

On résumera donc par:
if(valTest) {
  // INSTRUCTIONS SI valTest != 0
}
else {
   // INSTRUCTIONS SI valTest == 0
}

ciao...
BruNews, MVP VC++
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
if ("ananas" ||"banane" ||"figue" ||"kiwi"||"melon"||"nectarine" ||"orange"||
            "pasteque"||"pecheb"||"pechej");
            if ("ananas") {  printf(" Ananas 1 kg a 1 kg 2 calibre B \n"); }
            return 0;
            if ("banane") {  printf(" Banane - 200 gr couleur 5 \n"); }

Là je comprend pas. C'est quoi ça? Pourquoi des if qui test du texte? Quesque tu essais de faire comme ça?

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
Messages postés
3
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
6 septembre 2006

je voudrai écrire le fruit avoir le calibre correspondant exemple si j'écris
ananas la réponse est Ananas 1 Kg à 1kg 2 calibre b
si j'écris banane la réponse - 200gr couleur 5
voilà je ne sais pas utiliser le switch/case je ne saisis pas mais si m'explique peut
merci de vous pencher sur mon probleme
Alexandre
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Impossible de tester une chaine avec if car une chaine enfait, représente un pointeur SUR cette chaine et non pas la chaine elle même. Bon, voici quelque chose:
Efface:

if ("ananas" ||"banane" ||"figue" ||"kiwi"||"melon"||"nectarine" ||"orange"||
            "pasteque"||"pecheb"||"pechej");

à première vue, ça ne sert à rien du tout.

Ensuite remplace:

if ("ananas") {  printf(" Ananas 1 kg a 1 kg 2 calibre B \n"); }
            return 0;
            if ("banane") {  printf(" Banane - 200 gr couleur 5 \n"); }
            return 0;//ici cela bloque

par, d'après ce que je comprend:

scanf("%ld ", &lundim);
if (strcmp(lundim, "ananas") == 0)
{
    printf(" Ananas 1 kg a 1 kg 2 calibre B \n");
    return 0;
}
else if(strcmp(lundim, "banane") == 0)
{
    printf(" Banane - 200 gr couleur 5 \n");
    return 0;
}

Bon et tout ces return 0 qui sont libres dans le code, il faut les inclures DANS les accolades du if et non à l'extérieur sinon ton programme executera le premier return qu'il rencontrera et il quittera sans rien tester d'autre. Ensuite, ne met pas de ; après un if, JAMAIS. Tu devrais d'ailleur avoir un avertissement lors de la compilation. Tu met soi des accolades {} ou si tu n'as qu'une seul chose à faire après la condition, tu la met tel quel:

if(toto == TRUE)  <- PAS DE ;
    uniquechoseafaire(parametre); <- c'est un exemple, tu aurais pu modifier la valeur d'une variable par exemple (variable++ par exemple).

IMPORTANT:
Tout ce qui doit être fait si la condition est respecté devra être soi: dans les accolades si il y a plusieurs choses à faire ou directement après if si il y en a une seul (voir plus haut).

Bon je vais m'arreter là car je ne comprend plus la suite.

Voilà, j'espère que je ne me suis pas moi même trop mêlé dans mes explications.

Un bon conseil, replonge dans un bon livre de C. Ton code à partir de getchar n'est vraiment pas bon.

Bonne continuation.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--