/* fichier original C++ */ #include #include using namespace std; int puissance(int x, unsigned int n) { // calcule la valeur de x^n, où x entier relatif et n entier naturel if (n==0) return 1; else if (n%2==0) return puissance(x*x, n/2); else return x*puissance(x*x, (n-1)/2); }; int auCarre(int x) { // calcule la valeur de x^2, où x entier relatif return puissance(x, 2); }; enum Erreur { divisionParZero }; double inverseDe(double x) { // calcule l'inverse de x ; déclenche une exception si x=0 if (x==0) throw divisionParZero; else return 1/x; }; bool verifieCritere(int x) { switch (x) { case 4: case 25: case 121: return true; default: return false; }; }; void test() { int x; cout << "La saisie de 0 stoppe le programme" << endl; do { cout << "x="; cin >> x; int c = auCarre(x); cout << "le carre de " << x << " "; if (verifieCritere(c)) cout << "vaut bien"; else cout << "ne vaut pas"; cout << " 4, 27 ou 121 ; il vaut " << c << ", en l'occurence..." << endl; try { cout << "L'inverse de " << c << " "; double y = inverseDe(c); cout << "vaut " << y; } catch (Erreur) { cout << "n'est pas defini..."; }; cout << endl; } while (! x==0); }; // =========== code C++ standard, construit par Dev-C++ ========== int main(int argc, char *argv[]) { test(); system("PAUSE"); return EXIT_SUCCESS; }