Probleme avec les if et else

alexfr34 Messages postés 3 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 6 septembre 2006 - 6 sept. 2006 à 14:43
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 7 sept. 2006 à 14:07
[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

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
6 sept. 2006 à 15:07
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"
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
6 sept. 2006 à 15:34
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++
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
6 sept. 2006 à 22:43
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<!--
0
alexfr34 Messages postés 3 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 6 septembre 2006
6 sept. 2006 à 23:40
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
7 sept. 2006 à 14:07
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<!--
0
Rejoignez-nous