PDA

View Full Version : [C++] Equazioni di secondo grado


Giuseppe214
22-11-2007, 18:19
Ciao a tutti!!Data una equazione x²-5x+4 le soluzioni sono 4 e 1;
ma al mio programma vengono -6.5 e -3.5 xkè?

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

int main()
{
using namespace std;
//dichiarazione variabili
double a,b,c,x1,x2,delta;
cout<<"Inserisci il coefficiente della x²";
cin>>a;
cout<<"Inserisci il coefficiente della x";
cin>>b;
cout<<"Inserisci il termine noto";
cin>>c;
//calcolo delta
delta = ((b*b)-(4*a*c));
cout<<"il delta e'"<<delta<<endl;
//calcolo soluzioni
x1 = -(b)-(sqrt (delta)) /(2*a);
x2 = -(b)+(sqrt (delta)) /(2*a);
if (delta == 0)
cout<<"Le soluzioni sono coincidenti: x1:"<<x1<<" x2:"<<x2<<endl;
else if (delta < 0)
cout<<"Non ci sono soluzioni reali"<<endl;
else
cout<<"Le soluzioni sono: x1:"<<x1<<" x2:"<<x2<<endl;
system("Pause");
}

AnonimoVeneziano
22-11-2007, 18:39
C'è la precedenza degli operatori :)

La divisione viene fatta prima di addizione o sottrazione.

Questa scrittura :


x1 = -(b)-(sqrt (delta)) /(2*a);
x2 = -(b)+(sqrt (delta)) /(2*a);


(è la tua) fa sqrt(delta) / (2*a) e poi sottrae o somma -b.

Il codice giusto è:


x1 = (-(b)-(sqrt (delta))) /(2*a);
x2 = (-(b)+(sqrt (delta))) /(2*a);



(Guarda le nuove parentesi rotonde)

Ciao

Giuseppe214
22-11-2007, 18:42
Ora vengono -4 e -1:confused:

AnonimoVeneziano
22-11-2007, 18:55
Ora vengono -4 e -1:confused:

a me viene corretto

Giuseppe214
22-11-2007, 20:22
che valori metti?

AnonimoVeneziano
22-11-2007, 21:49
che valori metti?

1 -5 4

Ciao

Giuseppe214
22-11-2007, 22:05
Ah ecco sbagliavo io!!Grazie dell'aiuto:)