C ++ equation de second degrés

Résolu
Joey -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
bonjour,

Je dois realiser une classe permettant de representer et traiter les equation du second degres, la classe doit permettre de saisir et d'afficher les parametres d'une equation du second degrés et calculer les solutions.

Etant novice en C++, je ne sais pas trop comment faire
merci...

3 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    #include <iostream>
    #include <vector>
    
    public class polynome{
       //Membres de l'objet
       double a,b,c;
    
       //Constructeur
       polynome(double a,double b,double c):a=0,b=0,c=0{}
    
       //Destructeur
       ~polynome(){}
    
        //Calcule delta
        double delta(){return b*b-4*a*c;}
    
        std::vector<double> racines(){
           std::vector v;
           double d=this.delta();
           if (d<0){
              std::cout<<"Pas de racines reelles !"<<std::endl;
              return v;
           }
           else if (d==0){
              std::cout<<"Une seule racine reelle"<<std::endl;
              v.push_back(........); //formule pour une racine
              return v;
           }else{//d>0
              std::cout<<"Deux racines reelles"<<std::endl;
              v.push_back(........); //formule pour la première racine
              v.push_back(........); //formule pour la deuxième racine
              return v;
           }
       }
    };
    
    std::ostream & 	operator<< (std::ostream &os, polynome const &p){
        std::ostream o;
        o<<a<<"x²+"<<b<<"x+"<<c;
    }
    
    int main(){
        polynome p(2,5,6);
        std::cout<<p<<std::endl;
        std::cout<<"delta="<<p.delta()<<std::endl;
        std::vector v=p.racines();
        std::cout<<"racines:"<<std::end;
        for(unsigned int i=0;i<v.size();++i) std::cout<<v[i]<<std::endl;
        return 0;
    }


    J'ai pas vérifié si ça marchait mais ca doit être un truc dans le genre. Attention à bien compiler avec l'option pour linker la librairie mathématiques si tu utilises les racines carrées pour le calcul des racines (-lm je crois)

    Bonne chance
    6
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Il y a un moment aussi il où il faut se prendre en main. Surtout quand le post remonte à 2 ans :
    #include <iostream>
    #include <cmath>
    
    class polynome_t{
        protected:
            double a; // coefficient de x^2
            double b; // coefficient de x^1
            double c; // coefficient de x^0
        public:
            polynome_t(const double & a0,const double & b0,const double & c0):
                a(a0),b(b0),c(c0)
            {}
    
            inline double get_delta() const{
                return b*b - 4*a*c;
            }
    
            inline const double & get_a() const{
                return a;
            }
    
            inline const double & get_b() const{
                return b;
            }
    
            inline const double & get_c() const{
                return c;
            }
    
            inline std::pair<std::pair<double,double>,bool>
            get_racines() const{
                std::pair<double,double> racines;
                double delta = get_delta();
                if(delta < 0)   return std::make_pair(racines,false); // pas de racine reelle
                racines.first  = (- b - sqrt(delta))/(2*a);
                racines.second = (- b + sqrt(delta))/(2*a);
                return std::make_pair(racines,true);
            }
    
    };
    
    inline std::ostream & operator << (std::ostream & out,const polynome_t & p){
        const double &
            a = p.get_a(),
            b = p.get_b(),
            c = p.get_c();
        if (a)              out << a << " * x^2";
        if (a && b)         out << " + ";
        if (b)              out << b << " * x ";
        if ((a || b) && c)  out << " + " << c;
        return out;
    }
    
    int main(){
        // x^2 - 4
        polynome_t polynome(1,0,-4);
        double delta = polynome.get_delta();
        std::cout << polynome << std::endl << "delta = " << delta << std::endl;
    
        std::pair<std::pair<double,double>,bool> res = polynome.get_racines();
        if (res.second){
            if (delta){
                std::cout << "2 racines réelles"  << std::endl
                    << res.first.first << std::endl
                    << res.first.second << std::endl;
            }else{
                std::cout << "1 racine réelle"  << std::endl
                    << res.first.first << std::endl;
            }
        }else{
            std::cout << "Pas de racine réelle !" << std::endl;
        }
        return 0;
    }
    

    Ce qui donne :
    (mando@aldur) (~) $ g++ -W -Wall -lm plop.cpp
    (mando@aldur) (~) $ ./a.out
    1 * x^2
    delta = 16
    2 racines réelles
    -2
    2
    

    Bonne chance
    1