# TP8 jeudi 13h30-15h30 **exo 1** ```cpp const int MAX_DEGRE = 32; struct Polynome{ float coeffs[MAX_DEGRE+1]; }; // c'est correct, merci void PolynomeNul(Polynome &p) { // un polynome nul doit avoir tous ses coefficients nuls for(int i=0; i <= MAX_DEGRE; i++) p.coeffs[i] = 0; } // c'est correct, merci bool egalPoly(Polynome p1, Polynome p2) { // il suffit d'une seule différence pour retourner faux for(int i=0; i <= MAX_DEGRE; i++){ if(p1.coeffs[i] != p2.coeffs[i]) return false; } return true; } // très bien void modifierCoeffPoly(Polynome &p, int d, float co) { if ( d <= MAX_DEGRE and d >= 0) p.coeffs[d] = co; //on peut ecire ceci pour un message plus clair else cerr << __func__ << ": " << d<< ": mauvais degre"<< endl; } // c'est bon, merci int degrePoly(Polynome p) { int i = MAX_DEGRE-1; // on parcourt le tableau de droite à gauche // tant que c'est des zéros on recule while(i >= 0 and p.coeffs[i] == 0) i--; return i; } // A tester car je ne suis pas sûr que c'est correct à 100% float coeffPoly(Polynome p, int d) { if ( not estNulPoly){ if ( d <= MAX_DEGRE && d>=0) return p.coeffs[d] ; } else return -1; cout << " degre trop grand" << endl; return -1; } // corrigé du prof pour avoir une autre solution float coeffPoly(Polynome p, int d){ if (0 <=d && d <= MAX_DEGRE) return p.coeffs[d]; cerr << __func__ << ": " <<d << ": mauvais degre" << endl; exit(EXIT_FAILURE); } // c'est bon, merci bool estNulPoly(Polynome p) { // il suffit d'un seul coeef non nul pour que le polynome soit non nul for(int i=0; i <= MAX_DEGRE; i++){ if(p.coeffs[i] != 0) return false; } return true; } ``` ** exo2 ** ```cpp const int MAX_DEGRE = 32; struct Polynome{ int degre; float coeffs[MAX_DEGRE]; }; void PolynomeNul(Polynome &p) { p.degre =-1; } // corrigé du prof void modifierCoeffPoly(Polynome &p, intd, float co) { int i; if (d <0 || d > MAX_DEGRE){ cerr << __func__ << ": " << d<< ": mauvais degre"<< endl; } else { p.coeffs[d] =co; if (d > p.degre && co) { for (i =p.degre + 1; i <d; i++) p.coeffs[i] =0; p.degre = d; } else if (d == p.degre && co== 0) { for (i =d; i >= 0 && p.coeffs[i] == 0; i--); p.degre = i; } } } float coeffPoly(Polynome p, int d){ if (0 <=d && d <= MAX_DEGRE) { if (d <=p.degre) return p.coeffs[d]; return 0; } cerr << __func__ << ": " <<d << ": mauvais degre" << endl; exit(EXIT_FAILURE); } bool estNulPoly(Polynome p) { return p.degre == -1; } // modifierCoeffPoly: 33: mauvais degre