Equation 2eme degré
bupole
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
akybienvenu Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
akybienvenu Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai voulu créer un programme afin de resoudre une equation du 2émé degrée en prennant en consodération si le Delta<0(les racines imaginaires) ms à chaque fois que je compile je trouve un probleme dans mon programme pilote(main) comme montre la capture si desous
vous trouvrer mon code source en bas veuillez m'aider svp merci d'avance
Equation.h
Equation.cpp
main.cpp
j'ai voulu créer un programme afin de resoudre une equation du 2émé degrée en prennant en consodération si le Delta<0(les racines imaginaires) ms à chaque fois que je compile je trouve un probleme dans mon programme pilote(main) comme montre la capture si desous
vous trouvrer mon code source en bas veuillez m'aider svp merci d'avance
Equation.h
#ifndef EQUATION_H #define EQUATION_H class Equation { public: Equation(int a,int b,int c); int get_a(); void set_a(int a); int get_b(); void set_b(int b); int get_c(); void set_c(int c); void saisie(); void afficher(); void calcul(int a,int b,int c); private: int a; int b; int c; }; #endif // EQUATION_H
Equation.cpp
#include "Equation.h" #include<iostream> #include<string.h> #include<math.h> using namespace std; Equation::Equation(int a,int b,int c){ this->a=a; this->b=b; this->c=c; } int Equation::get_a(){ return a; } int Equation::get_b(){ return b; } int Equation::get_c(){ return c; } void Equation::set_a(int a){ this->a=a; } void Equation::set_b(int b){ this->b=b; } void Equation::set_c(int c){ this->c=c; } void Equation::saisie(){ cout<<"Entrer a : "; cin>>a; cout<<"Entrer b : "; cin>>b; cout<<"Entrer c : "; cin>>c; } void Equation::afficher(){ cout<<a<<"X² + "<<b<<"X + "<<c; } void Equation::calcul(int aa,int bb,int cc){ float d,rd,rdi; float x1,x2,x; if (a==0){ cout<<"L'equation n'as pas de solutions"; } d=pow(b,2)-4*a*c; rd=sqrt(d); if (d>0){ x1=(-b-rd)/2*a; x2=(-b+rd)/2*a; rd=sqrt(d); cout<<"L'equation a 2 solutions : \n"; cout<<"X1 = "<<x1<<"\n"; cout<<"X2 = "<<x2<<"\n"; } else if(d==0){ x=-b/2*a; cout<<"L'equation a 1 solution : \n"; cout<<"X = "<<x<<"\n"; } else if(d<0){ rdi=sqrt((-1)*d); cout<<"L'equation a 2 solutions imaginaires : \n"; cout<<"X1 = ("<<(-1)*bb<<" - "<<rdi<<"i)/"<<2*a; cout<<"X2 = ("<<(-1)*bb<<" + "<<rdi<<"i)/"<<2*a; } }
main.cpp
#include<iostream> #include<string.h> #include "Equation.h" #include<math.h> using namespace std; int main() { int choix; do{ int a,b,c; Equation E; E.saisie(); E.afficher(); E.calcul(a,b,c); cout<<"pour refaire taper 1 sinon taper une autre touche"; cin>>choix; }while(choix=1); return 0; }
A voir également:
- Equation 2eme degré
- 2eme ecran pc - Guide
- 2eme appel ooredoo - Guide
- 94 degre - Télécharger - Divers Jeux
- Degré clavier iphone - Guide
- 2eme whatsapp - Guide
3 réponses
Il y a quelque truc que je comprend pas...
La 1ere es pourquoi tu réserve 3 int au debut du main, mais tu ne les initialse pas... Donc on ne sais pas quelle valeur ils ont. De plus le a b et c de ton objet n'ont rien a voir avec les 3 ints que tu reserve si tu code normalement....
Quand tu crréer une classe tu dois ecrire un constructeur et un destructeurs.... Et c'est le contructuer qui vient reserver la taille necessaire quand tu declare ton equation dans ton main.
Rajoute un destructeurs a ta classe equation.
puis enleve la déclaration de tes trois int a,b et c de ton main.
Puis change la fonction en: void Equation::calcul() et utilise dans ton calcul directement les attributs de ton equation;a b et c. PArce que dans ta fonction tu melange a,b et c avec aa, bb et cc... D'ailleurs aa et cc tu ne les utilise pas...
La 1ere es pourquoi tu réserve 3 int au debut du main, mais tu ne les initialse pas... Donc on ne sais pas quelle valeur ils ont. De plus le a b et c de ton objet n'ont rien a voir avec les 3 ints que tu reserve si tu code normalement....
Quand tu crréer une classe tu dois ecrire un constructeur et un destructeurs.... Et c'est le contructuer qui vient reserver la taille necessaire quand tu declare ton equation dans ton main.
Rajoute un destructeurs a ta classe equation.
puis enleve la déclaration de tes trois int a,b et c de ton main.
Puis change la fonction en: void Equation::calcul() et utilise dans ton calcul directement les attributs de ton equation;a b et c. PArce que dans ta fonction tu melange a,b et c avec aa, bb et cc... D'ailleurs aa et cc tu ne les utilise pas...
akybienvenu
Messages postés
48
Date d'inscription
Statut
Membre
Dernière intervention
c'est juste bonne expliquation
Bonjour,
Je pense que le problème vient de la conception.
Ta classe n'est pas sensée s'occuper de la saisie ni de l'affichage.
Tout ce qu'elle doit faire c'est :
- Initialisation - Prendre 3 valeurs
- Calcul - Effectuer le calcul
- Retour - Résultat du calcul.
Pensé comme ça, on voit tout de suite que ta classe se transforme en simple fonction (Puisqu'il n'y a aucune contrainte de durée de vie des variables membres entre les fonctions).
Je pense que le problème vient de la conception.
Ta classe n'est pas sensée s'occuper de la saisie ni de l'affichage.
Tout ce qu'elle doit faire c'est :
- Initialisation - Prendre 3 valeurs
- Calcul - Effectuer le calcul
- Retour - Résultat du calcul.
Pensé comme ça, on voit tout de suite que ta classe se transforme en simple fonction (Puisqu'il n'y a aucune contrainte de durée de vie des variables membres entre les fonctions).