Problème avec le "swicth" (C++)
Résolu
18sharky81
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
18sharky81 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
18sharky81 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un problème avec ce programme:
"#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
char program;
double a, c, b, A, B, C;
cout << "Quel programme souhaitez-vous executer?";
cout << endl << "\t" << "1: Theoreme de Pythagore.";
cout << endl << "\t" << "2: Reciproque du Theoreme de Pythagore.";
cout << endl;
cin >> program;
system("cls");
switch(program){
case'1':
char h;
cout << "Voulez-vous calculer l'hypothenuse? (o/n):\t";
cin >> h;
system("cls");
switch(h){
case'o':
/* AB= a ; AC= c ; BC= b */
cout << "Dans le triangle ABC rectangle en A, l'hypothenuse est [BC].\n\n";
cout << "\nSaisir la longueur AB:\t";
cin >> a;
cout << "\nSaisir la longueur AC:\t";
cin >> c;
A= pow(a,2);
C= pow(c,2);
sqrt(A+C);
cout << "[BC] mesure " << b << endl;
system("pause");
break;
case'O':
cout << "Dans le triangle ABC rectangle en A, l'hypothenuse est [BC].\n\n";
cout << "\nSaisir la longueur AB:\t";
cin >> a;
cout << "\nSaisir la longueur AC:\t";
cin >> c;
A= pow(a,2);
C= pow(c,2);
sqrt(A+C);
cout << "[BC] mesure " << b << endl;
system("pause");
break;
case'n':
cout << "Soit [BC] l'hypothenuse et [AB] le cote connu.\n\n";
cout << "Saisissez la longueur BC:\t";
cin >> b;
cout << endl;
cout << "Saisir la longueur AC:\t";
cin >> c;
A= pow(a,2);
B= pow(b,2);
c= sqrt(B-A);
cout << "[AC] mesure " << c;
system("pause");
break;
case'N':
cout << "Soit [BC] l'hypothenuse et [AB] le cote connu.\n\n";
system("pause");
cout << "Saisissez la longueur BC:\t";
cin >> b;
cout << endl;
cout << "Saisir la longueur AC:\t";
cin >> c;
A= pow(a,2);
B= pow(b,2);
c= sqrt(B-A);
cout << "[AC] mesure " << c;
system("pause");
break;
default:
cout << "ERREUR";
system("pause");
return 0;
break;
case'2':
cout << "Soit un triangle ABC, le cote le plus long est BC.\n\n";
cout << "Saisir la longueur AB:\t";
cin >> a;
cout << "Saisir la longueur AC:\t";
cin >> c;
cout << "Saisir la longueur BC:\t";
cin >> b;
A= pow(a,2);
B= pow(b,2);
C= pow(c,2);
if(B== A+C){
cout << "ABC est rectangle en A.";
system("pause"); }
else{
cout << "B est different de A+C, donc ABC n'est pas rectangle.";
system("pause");
}
break;
}
}
}
".
Le problème est que quand je choisis la réciproque (case'2'), le programme se ferme automatiquement.
Quelqu'un pourrait-il m'aider?
Merci d'avance.
j'ai un problème avec ce programme:
"#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
char program;
double a, c, b, A, B, C;
cout << "Quel programme souhaitez-vous executer?";
cout << endl << "\t" << "1: Theoreme de Pythagore.";
cout << endl << "\t" << "2: Reciproque du Theoreme de Pythagore.";
cout << endl;
cin >> program;
system("cls");
switch(program){
case'1':
char h;
cout << "Voulez-vous calculer l'hypothenuse? (o/n):\t";
cin >> h;
system("cls");
switch(h){
case'o':
/* AB= a ; AC= c ; BC= b */
cout << "Dans le triangle ABC rectangle en A, l'hypothenuse est [BC].\n\n";
cout << "\nSaisir la longueur AB:\t";
cin >> a;
cout << "\nSaisir la longueur AC:\t";
cin >> c;
A= pow(a,2);
C= pow(c,2);
sqrt(A+C);
cout << "[BC] mesure " << b << endl;
system("pause");
break;
case'O':
cout << "Dans le triangle ABC rectangle en A, l'hypothenuse est [BC].\n\n";
cout << "\nSaisir la longueur AB:\t";
cin >> a;
cout << "\nSaisir la longueur AC:\t";
cin >> c;
A= pow(a,2);
C= pow(c,2);
sqrt(A+C);
cout << "[BC] mesure " << b << endl;
system("pause");
break;
case'n':
cout << "Soit [BC] l'hypothenuse et [AB] le cote connu.\n\n";
cout << "Saisissez la longueur BC:\t";
cin >> b;
cout << endl;
cout << "Saisir la longueur AC:\t";
cin >> c;
A= pow(a,2);
B= pow(b,2);
c= sqrt(B-A);
cout << "[AC] mesure " << c;
system("pause");
break;
case'N':
cout << "Soit [BC] l'hypothenuse et [AB] le cote connu.\n\n";
system("pause");
cout << "Saisissez la longueur BC:\t";
cin >> b;
cout << endl;
cout << "Saisir la longueur AC:\t";
cin >> c;
A= pow(a,2);
B= pow(b,2);
c= sqrt(B-A);
cout << "[AC] mesure " << c;
system("pause");
break;
default:
cout << "ERREUR";
system("pause");
return 0;
break;
case'2':
cout << "Soit un triangle ABC, le cote le plus long est BC.\n\n";
cout << "Saisir la longueur AB:\t";
cin >> a;
cout << "Saisir la longueur AC:\t";
cin >> c;
cout << "Saisir la longueur BC:\t";
cin >> b;
A= pow(a,2);
B= pow(b,2);
C= pow(c,2);
if(B== A+C){
cout << "ABC est rectangle en A.";
system("pause"); }
else{
cout << "B est different de A+C, donc ABC n'est pas rectangle.";
system("pause");
}
break;
}
}
}
".
Le problème est que quand je choisis la réciproque (case'2'), le programme se ferme automatiquement.
Quelqu'un pourrait-il m'aider?
Merci d'avance.
3 réponses
salut,
comme ça , à froid, je dirais que tu as un problème d'imbrication,
tu as inclus le case '2' dans le switch ( h ) et non dans le switch (programme )
ferme le switch (h ) sous :
default:
cout << "ERREUR";
system("pause");
return 0;
--> } break;
et efface la dernière parenthèse
comme ça , à froid, je dirais que tu as un problème d'imbrication,
tu as inclus le case '2' dans le switch ( h ) et non dans le switch (programme )
ferme le switch (h ) sous :
default:
cout << "ERREUR";
system("pause");
return 0;
--> } break;
et efface la dernière parenthèse