PROGRAMMATION C++

kariss1 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

#include <iostream>
#include <math.h>

using namespace std;

int main()
{ double delta,a,b,c,x1,x2;

printf("\tPROGRAMME QUI FAIT LE CALCUL D UNE EQUOITION DE 2eme DEGRE\n");
printf("\t----------------------------------------------------------");
printf("\n\n\n Entrez a,b et c : ");scanf("%lf %lf %lf",&a,&b,&c);
if (a==0)
{if(b==0)
{printf("Votre equoition n a pas de solutoin");}
else
{x1=-b/c;
printf("La solution de votre equoition est : %lf",x1);}}
else
{delta=(b*b)-(4*a*c);
if(delta<0)
{printf("Votre equoition n a pas de solution");}
else if (delta==0)
{x1=-b/(2*a);
printf("Votre solution est : %lf",x1);}
else
{x1=(-b-(sqrt(delta)))/(2*a);
x2=(-b+(sqrt(delta)))/(2*a);
printf("Les deux solution possible sont : \n\t %lf \n\t %lf\n\n",x1,x2);}}



system("PAUSE");
}

ilya une erreur dans la deuxième parti de puis delta=(b*b)-(4*a*c);
et jarive pa a le trouvé ????
et vous vous pouvez la trouver !!!

5 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Tout d'abord : en C++, utilise plutôt cout que printf (surtout si t'inclues iostream et non stdio.h). Inclue cmath et non math.h. De même pour les scanf, utilise plutôt des cin.

Pour l'aspect algorithme : il manque des cas. Le cas c==0.
Attention à la comparaison de double avec l'opérateur ==. Il vaut mieux vérifier que la différence est très faible, sinon on peut avoir des surprises.

ilya une erreur dans la deuxième parti de puis delta=(b*b)-(4*a*c);
Peux-tu être plus précis ?

Et enfin, la prochaine fois que tu postes un code, merci d'utiliser la balise "code" (que tu trouveras à droite de "souligner") pour améliorer la lisibilité de ton code. Car là, ça donne pas envie.
0
kariss1 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
ah okay moi je c travail avec printf/scanf et aussi je peut travailler avec cout/cin
mais l'erreur rest toujour là tu pe faire l'exucution de ce programme et tu va trouver l'erreur
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Sur ma machine ton programme compile (en rajoutant bien sûr stdio.h, et en remplaçant tes lf par des f dans tes printf).

Voilà pourquoi je te demandais d'être plus précis quant à l'erreur que tu obtiens.
0
kariss1 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
par exemple je denne des valeur pour a,b et c ile me donne Votre equoition n a pas de solution
meme si l'equoition a une resuleta ou peu etre de solution
et quand je done a=0 et par exemple b=2 ile me donne la solution
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Sois plus précis et donne un exemple concret de valeurs où tu trouves que ça "bug" ?

Par exemple je denne des valeur pour a,b et c ile me donne Votre equoition n a pas de solution
Pour quelle valeur de a, b, c ?
0
kariss1 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
okay
a=2
b=20
c=1
alor delta = 20 >0 donc ilya deux solution mais mon programme me pa de solution !!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
delta = 20 >0
Non, delta=20*20-4*2*1=392

Sinon sur ma machine, ça fonctionne.
As-tu donné la même version de programmes sur ta machine ?
	PROGRAMME QUI FAIT LE CALCUL D UNE EQUOITION DE 2eme DEGRE
	----------------------------------------------------------


 Entrez a,b et c : 2 20 1
Les deux solution possible sont : 
	 -9.949747 
	 -0.050253

Mais comme j'ai dit dans mon premier post, cela est sûrement dû à la comparaison entre double avec l'opérateur égal. Il vaut mieux vérifier que la différence est très petite (1e-5).
0