Bonjour.
Je veux écrire un programme qui affiche le menu suivant:
1- Résolution d'un polynôme de 1er degré
2- Résolution d’un polynôme de 2nd degré
3- Quitter
Après avoir fait un de ces traitement, le programme doit interroger l'utilisateur s’il veut continuer ou non. Si oui, il le renvoi au menu principal sinon il met fin à l’exécution.
J’ai fait un premier essai mais mon programme ne fait pas ça : dans un premier temps, il fait correctement le traitement d’un choix parmi les 3 mais juste ensuite il ne communique pas comme voulu avec l’utilisateur pour le renvoyer au menu ou quitter.
SVP Aidez-moi!!
Voila mon code :
Code:#include<stdio.h> #include <math.h> void affichagemenu() { printf("Tapez le nombre correspondant pour choisir l'opération à effectuer:\n 1 pour résoudre un polynome de premier degré\n 2 pour résoudre un polynome de second degré\n 3 pour quitter le programme\n"); } int lirechoix() { int Indice=0; affichagemenu(); scanf("%d",&Indice); return(Indice); } float premier() { int a=0, b=0; float x=0; printf("Votre polynome s'écrit sous la forme: ax+b=0\n\n"); printf("Que vaut 'a' ? "); scanf("%d", &a); printf("\n\n"); printf("Que vaut 'b' ? "); scanf("%d", &b); printf("\n\n"); if (a!=0) { x=-((float)b)/a; printf("La solution de l'equation est : x = %f\n\n\n", x); } else { if(b == 0) printf("Tout réel a strictement different de zero est une solution !\n\n\n"); // la solution est 0 divisé par a avec a non nul else printf("Pas de solution réelle\n\n\n"); return (x); } } float second() { /* Calcul des solutions réelles d'une équation du second degré */ int A, B, C; float f; double D; /* Discriminant Delta*/ printf("Votre polynome s'écrit sous la forme: ax^2 + bx + c = 0 \n\n"); printf("Que vaut a, b et c? Introduisez les en ordre: a, b, puis c :\n"); scanf("%i %i %i", &A, &B, &C); D = pow(B,2) - 4.0*A*C; /* Calcul du discriminant b^2-4ac */ /* Distinction des différents cas */ if (A==0 && B==0 && C==0) /* 0x = 0 */ printf("Tout réel est une solution de cette équation.\n"); else if (A==0 && B==0) /* Contradiction: c # 0 et c = 0 */ printf("Cette équation ne possède pas de solutions.\n"); else if (A==0) /* bx + c = 0 */ { printf("La solution de cette équation est :\n"); f=((double)C/B); printf(" x = %.4f\n", f); } else if (D<0) /* b^2-4ac < 0 */ printf("Cette équation n'a pas de solutions réelles.\n"); else if (D==0) /* b^2-4ac = 0 */ { printf("Cette équation a une seule solution réelle :\n"); f=((double)-B/(2*A)); printf(" x = %.4f\n", f); } else /* b^2-4ac > 0 */ { printf("Les solutions réelles de cette équation sont :\n"); f=((-B+sqrt(D))/(2*A)); //sqrt est la fonction dans le langage C pour le racine carré printf(" x1 = %.4f\n", f); f=((-B-sqrt(D))/(2*A)); printf(" x2 = %.4f\n", f); return (f); } } float main() { int l,o ; float s; printf("************************************************\n**** Solveur de polynome ****\n************************************************\n\n"); l=lirechoix(); while (l!=3) { if (l==1) { s=premier(); scanf("%f",&s); } else if (l==2) { s=second(); scanf("%f",&s); } } printf("Tapez 1 pour continuer vers une autre opération\nTapez une touche quelconque pour quitter\n"); /*j'ai choisi d'ajouter cette étape pour ne pas encombrer les affichages et mettre l'utilisateur à l'aise au lieu de lui afficher le menu à chaque fois */ scanf("%d",&o); while (o!=1) { return 0; // si l'utilisateur ne veut pas continuer } l= lirechoix(); // pour renvoyer le menu s'il veut continuer }
-----