[C++]Programme de moyenne très compliqué

Bonjour,
c'est la première fois que j'écris un programme en c++ aussi compliqué et justement, la fin avec les if est totalement foireuse, si quelqu'un pouvait me rectifier , ça serait sympa,
merci

#include <iostream>

using namespace std;

int main()
{
double a;
double b;
double c;
double d;
double e;
double f;
double g;
double i;
double j;
double h;
double k;
double l;
double m;
double n;
double o;
double moyenne;
char input2[50];
char input3[50];
char pseudo[50];
cout << "Ce programme pantagru\x82liste calule VOS moyennes ,cher magnoludovicien²²²²²²²²By Gabsens²²²²²²\n";
cout << "Quel est votre pseudo ?\n" ;
cin >> pseudo;
cout << "Salut " << pseudo <<endl;
cout << "Entrez vos moyennes de :\n";
cout <<"Francais:";
cin >> a;

cout<< "\nMath\x82matiques:";
cin >> b;

cout << "Histoire-G\x82ographie:";
cin >> c;

cout << "Physique-Chimie:",
cin >> d;

cout << "Passons donc aux SVT:";
cin >> g;

cout << "Faites vous allemand ??? R\x82pondez par oui ou non, ok?";

char input[20];
char correct [] = "oui";
cin >> input;
if (strcmp(input, correct) == 0)
{
cout << " d'accord, vous pouvez rentrer votre moyenne:";
cin >> e;
}
else
{
cout << "Pfff, dommage ; on continue?\n";
cout << "Entrez donc votre moyenne d'espagnol:";
cin >> f;
}

cout <<"Hum...EPS???:";
cin >> h;

cout << "Oh, j'allais oublier le latin...\ Mais fais-tu latin ??";
cin >> input2;
char correct2 [] = "oui";
if (strcmp(input2, correct2) == 0)
{
cout << " Mon enfant, beati pauperes spiritu:";
cin >> i;
}
else

{
cout << "Pfff, pas grave, mais tu fais surement Grec??\n";
cin >> j;
}
cout<< " Tadmam, c'est presque fini, il est donc de l'ISI.\n Tu en fais ??";
cin >>input3;
char correct3 [] = "oui";
if (strcmp(input3, correct3) == 0)
{
cout << " Bien :";
cin >> k;
cout << "\nPassons à la moyenne:";
}
else

{
cout << "Peu importe, passons à la moyenne:\n";

}
if ((strcmp(input, correct)) == 0 && ( strcmp(input2, correct2) == 0)&& (strcmp(input3, correct3) == 0))
{
moyenne = (a+b+c+d+g+e+k+i)/8;
cout << "Moyenne =" << moyenne;

if ((strcmp(input, correct)) == 0 && ( strcmp(input2, correct2) == 0)&& (strcmp(input3, correct3) == 1))
{
moyenne = (a+b+c+d+g+e+i)/7;
cout << "Moyenne =" << moyenne;

if ((strcmp(input, correct)) == 0 && ( strcmp(input2, correct2) == 1)&& (strcmp(input3, correct3) == 0))
{
moyenne = (a+b+c+d+g+e+j+k)/8;
cout << "Moyenne =" << moyenne;

if ((strcmp(input, correct)) == 0 && ( strcmp(input2, correct2) == 1)&& (strcmp(input3, correct3) == 1))
{
moyenne = (a+b+c+d+g+e+j)/7;
cout << "Moyenne =" << moyenne;
if ((strcmp(input, correct)) == 1 && ( strcmp(input2, correct2) == 0)&& (strcmp(input3, correct3) == 0))
{
moyenne = (a+b+c+d+g+f+k+i)/8;
cout << "Moyenne =" << moyenne;
if ((strcmp(input, correct)) == 1 && ( strcmp(input2, correct2) == 1)&& (strcmp(input3, correct3) == 0))
{
moyenne = (a+b+c+d+g+f+k+j)/8;
cout << pseudo<<"votre moyenne est: " << moyenne;
}
}
}
}
}
}

system ("Pause");
}
Configuration: Windows XP
Opera 9.80

3 réponses

  1. Merci beaucoup grâce à votre aide j'ai appris beaucoup
    0
    1. Pourquoi faire simple lorsqu'on peut faire compliqué !!! ;-)
      Si 'ai bien compris (sauf le 'h' dont je ne sais ce que tu en fais), le problème est le suivant:
      Le nombre de notes est 7 ou 8 et dans tous les cas et il y a 5 notes obligatoires: a, b, c, d, g.
      (1 ligne ) total = a + b + c + d + g et nbreNotes = 7
      (4 lignes) si 'input1' = 'oui' alors total = total + e sinon total = total + f
      (4 lignes) si 'input2' = 'oui' alors total = total + i sinon total = total + j
      (2 lignes) si 'input3' = 'oui' alors total = total + k et nbreNotes = 8
      (1 ligne ) moyenne = total / nbreNotes
      Soit seulement environ 12 lignes.
      On peut encore simplifier:
      (1 ligne ) total = a + b + c + d + g + f + j et nbreNotes = 7
      (2 lignes) si 'input1' = 'oui' alors total = total + e - f
      (2 lignes) si 'input2' = 'oui' alors total = total + i - j
      (2 lignes) si 'input3' = 'oui' alors total = total + k et nbreNotes = 8
      (1 ligne ) moyenne = total / nbreNotes
      Soit seulement environ 10 lignes.
      Bonne continuation.
      0
      1. quelques remarques :
        1.il fallait faire des if non imbriqués.
        2.tu as oublié deux cas.
        3.tu peux optimiser ton programme.

        #include <iostream> 
        
        using namespace std; 
        
        int main() 
        { 
        double a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,moyenne; 
        char input2[50]; 
        char input3[50]; 
        char pseudo[50]; 
        
        cout << "Ce programme calcule VOS moyennes \n"; 
        cout << "Quel est votre pseudo ?\n" ; 
        cin >> pseudo; 
        cout << "Salut " << pseudo <<endl; 
        cout << "Entrez vos moyennes de :\n"; 
        cout <<"Francais:"; 
        cin >> a; 
        
        cout<< "\nMath\x82matiques:"; 
        cin >> b; 
        
        cout << "Histoire-G\x82ographie:"; 
        cin >> c; 
        
        cout << "Physique-Chimie:", 
        cin >> d; 
        
        cout << "Passons donc aux SVT:"; 
        cin >> g; 
        
        cout << "Faites vous allemand ??? R\x82pondez par oui ou non, ok?"; 
        
        
        char input[20]; 
        char correct [] = "oui"; 
        cin >> input; 
        if (strcmp(input, correct) == 0) 
        { 
           cout << " d'accord, vous pouvez rentrer votre moyenne:"; 
           cin >> e; 
        } 
        else 
        { 
           cout << "Pfff, dommage ; on continue?\n"; 
           cout << "Entrez donc votre moyenne d'espagnol:"; 
           cin >> f; 
        } 
        
        cout <<"Hum...EPS???:"; 
        cin >> h; 
        
        cout << "Oh, j'allais oublier le latin...\ Mais fais-tu latin ??"; 
        cin >> input2; 
        char correct2 [] = "oui"; 
        if (strcmp(input2, correct2) == 0) 
        { 
           cout << " Mon enfant, beati pauperes spiritu:"; 
           cin >> i; 
        } 
        else 
        { 
           cout << "Pfff, pas grave, mais tu fais surement Grec??\n"; 
           cin >> j; 
        } 
        cout<< " Tadmam, c'est presque fini, il est donc de l'ISI.\n Tu en fais ??"; 
        cin >>input3; 
        char correct3 [] = "oui"; 
        if (strcmp(input3, correct3) == 0) 
        { 
           cout << " Bien :"; 
           cin >> k; 
           cout << "\nPassons à la moyenne:"; 
        } 
        else 
        { 
           cout << "Peu importe, passons à la moyenne:\n"; 
        } 
        if ((strcmp(input, correct)) == 0 && ( strcmp(input2, correct2) == 0)&& (strcmp(input3, correct3) == 0)) 
        { 
        moyenne = (a+b+c+d+g+e+k+i)/8; 
        cout << "Moyenne =" << moyenne; 
        }
        
        if ((strcmp(input, correct)) == 0 && ( strcmp(input2, correct2) == 0)&& (strcmp(input3, correct3) == 1)) 
        { 
        moyenne = (a+b+c+d+g+e+i)/7; 
        cout << "Moyenne =" << moyenne; 
        }
        
        if ((strcmp(input, correct)) == 0 && ( strcmp(input2, correct2) == 1)&& (strcmp(input3, correct3) == 0)) 
        { 
        moyenne = (a+b+c+d+g+e+j+k)/8; 
        cout << "Moyenne =" << moyenne; 
        }
        
        if ((strcmp(input, correct)) == 0 && ( strcmp(input2, correct2) == 1)&& (strcmp(input3, correct3) == 1)) 
        { 
        moyenne = (a+b+c+d+g+e+j)/7; 
        cout << "Moyenne =" << moyenne; 
        }
        
        if ((strcmp(input, correct)) == 1 && ( strcmp(input2, correct2) == 0)&& (strcmp(input3, correct3) == 0)) 
        { 
        moyenne = (a+b+c+d+g+f+k+i)/8; 
        cout << "Moyenne =" << moyenne; 
        }
        
        if ((strcmp(input, correct)) == 1 && ( strcmp(input2, correct2) == 1)&& (strcmp(input3, correct3) == 0)) 
        { 
        moyenne = (a+b+c+d+g+f+k+j)/8; 
        cout << pseudo<<"votre moyenne est: " << moyenne; 
        }
        
        // tu as oublié ces cas !!!!!!!!!!!!!!!!!!!!!
        
        if ((strcmp(input, correct)) == 1 && ( strcmp(input2, correct2) == 0)&& (strcmp(input3, correct3) == 1)) 
        { 
        cout << "tu as oubli\x82 ce cas "; 
        }
        
        if ((strcmp(input, correct)) == 1 && ( strcmp(input2, correct2) == 1)&& (strcmp(input3, correct3) == 1)) 
        { 
        cout << "tu as oubli\x82 ce cas "; 
        } 
        
        system ("Pause"); 
        }
        
        0