Bonjour,
J'étudie toujours le C++ au travers d'un livre.
Aujourd'hui, je ne comprends pas une expression qui se trouve dans une classe. Celle-ci a pour but de modéliser l'affichage d'un polynôme. Le principe de fonctionnement de la classe est basé sur un tableau de 5 double
dont la valeur de chaque élément constitue le coefficient d'un monôme et l'indice la puissance. Les variables constitutives sont représentées par un 'x'.
Je précise que je ne sais pas ce qu'est un polynôme mais que cette connaissance n'est pas indispensable à la compréhension de cette classe nommée polynôme bien sûr.
Pour l'instant le code n'est pas en adéquation avec le C++ moderne à des fins pédagogiques :
L'objectif est d'afficher le polynôme p(x) = 2x³ - x ² + 0.5x
sous la forme +2x^3-x^2+0.5x
.
- Polynome.h :
#ifndef POLYNOME_H
#define POLYNOME_H
#include <iostream>
using namespace std;
class Polynome
{
public:
//Polynome();
//virtual ~Polynome();
double coeffs_[5];
void imprimer(ostream& os);
protected:
private:
bool imprimerMonome(ostream& os, double coeff, int deg);
};
#endif // POLYNOME_H
- Polynome.cpp :
bool Polynome::imprimerMonome(ostream& os, double c, int deg)
{
bool monomeNul = true;
if (c != 0.0) // si c == 0, pas d'impression - monomeNul = true;
{
monomeNul = false;
os << ((c < 0) ? '-' :'+'); //si 'c' est négatif on affiche '-' sinon '+'
if (c < 0.0) c = -c ; // si 'c' est négatif 'c' est égal '-c'
if (c != 1.0 || deg == 0) os << c;
if(deg > 0) os << 'x';
if(deg > 1) os << '^' << deg;
}
return monomeNul;
}
void Polynome::imprimer(ostream& os)
{
bool polynomeNul = true;
for (int i = 4; i >=0 ;--i)
{
polynomeNul = imprimerMonome (os, coeffs_[i], i) && polynomeNul;
}
if(polynomeNul) os << "+0";
}
- main.cpp :
include <Polynome.h>
using namespace std;
int main()
{
Polynome p;
p.coeffs_[4] = 0 ;
p.coeffs_[3] = 2 ;
p.coeffs_[2] = -1 ;
p.coeffs_[1] = 0.5 ;
p.coeffs_[0] = 0 ;
p.imprimer(cout);
cout << endl;
p.coeffs_[4] = 0 ;
p.coeffs_[3] = 0 ;
p.coeffs_[2] = 0 ;
p.coeffs_[1] = 0 ;
p.coeffs_[0] = 0 ;
p.imprimer(cout);
cout << endl;
return 0;
}
Je n'ai pas encore transformé ce code au format arduino pour aller plus vite dans ma compréhension, je la remets à plus tard lorsque la classe sera finalisée.
Mon incompréhension se situe uniquement au niveau de cette ligne de code dans le fichier CPP et la méthode void imprimer(ostream& os);
:
polynomeNul = imprimerMonome (os, coeffs_[i], i) && polynomeNul;
Je comprends la méthode imprimerMonome (os, coeffs_[i], i)
qu'elle invoque mais je ne comprends pas ce que veut dire && polynomeNul
dans cette ligne de code ?
Merci par avance pour votre aide.
Bonne journée.