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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#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
}