Création
d'entreprise
Posez votre question Signaler

C ++ equation de second degrés [Résolu]

Joey - Dernière réponse le 18 nov. 2007 à 20:40
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...
Lire la suite 

C ++ equation de second degrés »

3 réponses
Réponse
+1
moins plus
#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
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
ya telement de faute
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « c ++ equation de second degrés » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?