Polynome

Amina GUERMOUCHE, Loïc JOLY et Michel SIMATIC

3 juin 2022

1 Introduction

Cet exercice a pour but de :

  1. manipuler les classes et les conteneurs ;
  2. adopter une démarche TDD (/Test Driven Development/) : coder les tests avant de coder nos fonctions, vérifier que les tests sont faux, écrire le code de nos fonctions et enfin vérifier que nos tests sont désormais corrects.

Pour ce faire, vous allez coder une classe permettant de gérer les polynômes en vous inspirant de Fraction1.cpp, Fraction2.cpp et Fraction3.cpp.

2 Travail à faire

        TEST(Creation, AvecCoefsNonNuls) {
           Polynome p1{ {1.2, 3, 4, 5} };
           Polynome p2{ {{0,1.2}, {1,3}, {2,4}, {3,5}} };
           EXPECT_EQ(p1, p2);
        }
        TEST(Somme, SommeAvecConstante) {
           Polynome p{ {0, 0, 2, 1} };
           double d{ 1.2 };
           Polynome somme_ref{ {1.2, 0, 2, 1} };
           EXPECT_EQ(p + d, somme_ref);
           EXPECT_EQ(d + p, somme_ref);
        }

3 Pour aller plus loin

Si vous avez réalisé une implémentation à base de vector (respectivement map), faites l’implémentation à base de map(respectivement vecteur). Pour ce faire, définissez un flag de compilation dans Polynome.h :

        #define VECTOR_IMPLEMENTATION 0
        class Polynome {
            private:
            #if (VECTOR_IMPLEMENTATION == 1)
                std::vectordouble> coef;
            #else // (VECTOR_IMPLEMENTATION == 1)
                std::map<int, double> coef;
            #endif // (VECTOR_IMPLEMENTATION == 1)
            public:

Puis, dans Polynome.cpp, encadrez toutes vos méthodes de Polynome à base de vector (respectivement map) entre :
#if (VECTOR_IMPLEMENTATION == 1)
et
#else // (VECTOR_IMPLEMENTATION == 1)

Enfin, implémentez toutes vos méthodes à base de map (respectivement vector) entre :
#else // (VECTOR_IMPLEMENTATION == 1)
et
#endif // (VECTOR_IMPLEMENTATION == 1)

Corrigé (à exploiter selon la procédure cmake de ce document).