Rechercher : dans
Par :

C ++ equation de second degrés

Dernière réponse le 23 jun 2008 à 09:56:42 Joey, le 17 oct 2005 à 22:07:50 
 Signaler ce message aux modérateurs

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...

1

mamiemando, le 17 oct 2005 à 22:38:07

#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

Répondre à mamiemando

2

red, le 18 nov 2007 à 19:14:45

Bonjour,
ya telement de faute

Répondre à red

3

 mamiemando, le 18 nov 2007 à 20:40:40

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

Répondre à mamiemando