Equation second degré

amel -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
j'ai une question, lorsque j'ecris mon programme qui résoud une equation en second degré avec des "float" ça nmarche po "lequation n'admet pas de solution" par contre quand jutilise des "doubles" ça marche, SVP pouvez vs me dire pourquoi???

A voir également:

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Il faudrait voir ton code !
0
amel
 
voilà le programme:
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
main()
{
float a,b,c,delta,x,x1,x2;
cout<<"donnez a,b,c tq ax2+bx+c=0\n";
cin>>a;
cin>>b;
cin>>c;
if(a==0)
{
if(b==0)
{
if(c==0)
cout<<"infinité de solutions";
else
cout<<"pas de solution";
}
else
cout<<"x="<<-c/b;
}
else
{
delta=b*b-4*a*c;
if(delta>0)
{
x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
cout<<"x1="<<x1<<"\n";
cout<<"x2="<<x2;
}
else
if(delta==0)
{
x=-b/(2*a);
cout<<"x="<<x;
}
else
cout<<"pas de solution";
}
system("pause");
}
jutilise un compilateur (dev c++)
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Je ne vois pas d'erreur dans le programme, quelles valeurs as-tu testé pour avoir ce comportement ?
0
amel
 
g tésté pour a=0.3, b=2.1, c=3.675 ça ne marche po :(
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Ici tu as donc théoriquement delta=0, mais le problème avec les valeurs flottantes c'est qu'il y a toujours des arrondis... Affiche delta pour voir, j'imagine que tu as plutôt quelque chose comme -0.000000001 et du coup tu rentres dans le cas de figure delta négatif, même si ce n'est pas vrai.
0
amel
 
j'ai po bien compris, ça veut dire qu'en utilisant des float on n'utilise que des nbres positifs; alors qu'avc les doubles on peut utiliser des nombre signés
0