Resolveur de trinomes linux

Soyez le premier à donner votre avis sur cette source.

Vue 2 259 fois - Téléchargée 126 fois

Description

C'est un resolveur de trinomes linux qui peut aller avec le calculateur scientifique que je viens de poster.

Source / Exemple :


Fichier .cpp (main) :

#include <iostream>
#include "trin.h"
using namespace std;

int main(void)
{
	long double na,nb,nc;
	int nbs;
	for(;;)
	{
		cout <<'\n'<<"a=";
		cin >> na;
		cout <<'\n'<<"b=";
		cin >> nb;
		cout <<'\n'<<"c=";
		cin >> nc;
		trin t(na,nb,nc);
		if(t.result()==0)
		{
			cout <<'\n'<<"pas de solutions"<<'\n';
		}
		if(t.result()==1)
		{
			cout <<'\n'<<"une solution : "<<t.Getx1()<<'\n';
		}
		if(t.result()==2)
		{
			cout <<'\n'<<"deux solutions"<<'\n'<<t.Getx1()<<'\n'<<t.Getx2()<<'\n';
		}
	}
	return 0;
}

		
Classe trin.h :

/*-------------------------------------------------------------------------------------------
-
-
-
-
-
-CLASSE TRINOME SECOND DEGRE PAR VISUALS
-
-
-
-
-
-
-------------------------------------------------------------------------------------------
/*
-

  • /
#include <cmath> using namespace std; class trin { public: trin(long double va,long double vb,long double vc); int result(); long double Getx1() const { return this->x1; } long double Getx2() const { return this->x2; } private: long double a; long double b; long double c; long double d; long double x1; long double x2; unsigned int nbsol; void calcd(); void verif(); void calcnbsol(); void calcx(); }; trin::trin(long double va,long double vb,long double vc) { a=va; b=vb; c=vc; calcd(); verif(); if(nbsol!=0) { calcnbsol(); calcx(); } } int trin::result() { return this->nbsol; } void trin::calcd() { d = (b*b)-(4*a*c); } void trin::verif() { if(d<0 || a==0) { nbsol=0; } else { nbsol=1; } } void trin::calcnbsol() { if(d==0) { nbsol=1; } if(d>0) { nbsol=2; } } void trin::calcx() { if(nbsol==1) { x1=x2=(-b-sqrt(d))/(2*a); } if(nbsol==2) { x1=(-b-sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); } }

Conclusion :


La classe est aussi de moi je ne me suis inspiré de rien d'autre. :)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
7
Date d'inscription
dimanche 22 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2007

c trop basique et si delta est négatif ? tu vas allouer des variables pour rien
et plus meme s'il n'y a qu'une solution, x2 ne sert a rien !
code de meilleures fonctions et arrete la déclaration de variable, ce n'est qu'une malheureuse classe concrete qui ne doit posséder que a,b et c, mets des entiers car double n'est pas assez précis

un programme comme celui la n'est ni windows ni linux ni ce que tu veux, il est universel.

pour ceux qui sont paumés, petit rappels :

trinome du second degré : ax^2+bx+c
equation a résoudre : ax^2+bx+c=0

on calcule delta pour connaitre le nombre de solutions :

delta = b^2-4ac

solutions de l'équation :

si delta < 0, pas de solution.
si delta == 0, une solution : x= -b/(2a)
si delta > 0, deux solutions : x1 (-b+racine(delta))/2a, x2 (-b-racine(delta))/2a

une idée pour ta classe, tu pourrais renvoyer les formes factorisées :

si delta < 0, pas de factorisation
si delta == 0, forme factorisée : a((x+b/(2a))^2)
si delta > 0, forme factorisée : a(x+b/2a-racine(delta)/2a) * (x+b/2a+racine(delta)/2a)

autre idée :

une fonction qui renvoie la forme canonique sous la forme que tu veux :

ax^2 + bx + c = a[(x+b/2a)^2-racine(delta)/(4a^2)]

tu devrais vérifier mes dires parceque ça date un peu quand même....
Messages postés
101
Date d'inscription
vendredi 15 février 2002
Statut
Membre
Dernière intervention
6 août 2007

Ca m'enerve ça chaque année on a droit à la resolution des eq de 2ieme deg à coefs constant. J'en ai deja vu 3.
Si tu veut faire mieux rajoute les solutions complexes si le discriminant de l'eq est négatif.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.