Buonasera a tutti.
Sto programmando un software in grado di risolvere equazioni di secondo grado.
Il software funziona bene nei calcoli, c'è solamente una cosa che non riesco a capire.
Definisco a,b e c come coefficienti di x e termine noto.
Faccio tutti i calcoli.
Dopo di che definisco che se a=0 l'equazione è di primo grado e lo scrivo.
Ora il problema qual'è: pur avendo definito che solo se a=0 l'equazione è di primo grado quando eseguo il programma e assegno ad a valori diversi da 0 lui calcola correttamente i valori di x ma mi ritorna comunque la stringa che l'equazione è di primo grado.
Qui sotto il listato, in allegato l'anomalia che ottengo.
In sintesi non vorrei che appaia che l'equazione è di primo grado quando ho definito a diverso da 0.
Grazie a chiunque potrà aiutarmi
#include<iostream>
#include<cmath>
using namespace std;
int main ()
{
double a,b,c;
double D;
double x1,x2,x3;
cout<<"inserire il valore di a: ";
cin>> a;
cout<<"inserire il valore di b: ";
cin>> b;
cout<<"inserire il valore di c: ";
cin>> c;
x3=-c/b;
D=(b*b)-4*a*c;
x1=(-b-sqrt(D))/2*a;
x2=(-b+sqrt (D))/2*a;
if (D>0 and a!=0)
{
cout<<" il valore di x1 e': "<<x1<<endl;
cout<<" il valore di x2 e': "<<x2<<endl;
}
if (D==0 and a!=0)
{
cout<<" il delta e' uguale a 0, le soluzioni saranno coincidenti, il loro valore e': "<<x1<<endl;
}
if (D<0 and a!=0)
{
cout<<" l'equazione è impossibile"<<endl;
}
if (a==0);
{
cout<<" l'equazione e' di primo grado, il valore di x e': "<<x3<<endl;
}
return 0;
}
Allegati: