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