C ++ equation de second degrés

Résolu
Joey -  
mamiemando Messages postés 34184 Statut Modérateur -
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...
A voir également:

3 réponses

mamiemando Messages postés 34184 Statut Modérateur 7 888
 
#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
red
 
Bonjour,
ya telement de faute
1
mamiemando Messages postés 34184 Statut Modérateur 7 888
 
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