Reputation: 15
Can anyone tell me why kertXAsiX1 = 1.20711 and kertXasiX2 = 0.207107? when it should be 4.82842 and 0.82842
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
int main()
{
float a = -0.5 , b=-2 , c=2, xVirsunes, yVirsunes, diskriminantas, kertXAsiX1, kertXasiX2, kertXAsiY, kertYAsiX, kertYAsiY;
cout << "Sveiki! Parasykite kvadratines funkcijos (ax*x + bx + c) a, b ir c\nreiksmes" << endl;
if (a > 0)
{
cout << "Funkcijos sakos ziuri i virsu" << endl;
}
else if(a < 0)
{
cout << "Funkcijos sakos ziuri zemyn" << endl;
}
xVirsunes = static_cast<double> ((-b)/(2*a));
yVirsunes = static_cast<double> (a * xVirsunes * xVirsunes + b * xVirsunes + c);
cout << "Virsunes koordinate: (" << xVirsunes << ";" << yVirsunes << ")" << endl;
kertXAsiY = 0;
diskriminantas = static_cast<double>(b * b - 4 * a * c);
kertXAsiX1 = static_cast<double> ((-b+sqrt(diskriminantas))/2 * a);
kertXasiX2 = static_cast<double> ((-b-sqrt(diskriminantas))/2 * a);
if (static_cast<double>(diskriminantas) < 0)
{cout << "Funkcija nekerta x asies" << endl;}
else if (static_cast<double>(diskriminantas) >= 0)
{
if (static_cast<double>(kertXAsiX1) != static_cast<double>(kertXasiX2))
{cout << "Funkcija kerta x asi taskuose: (" << static_cast<double>(kertXAsiX1) << ";" << static_cast<double>(kertXAsiY) << ") ir (" << static_cast<double>(kertXasiX2) << ";" << static_cast<double>(kertXAsiY) << ")" << endl;}
else if (kertXAsiX1 == kertXasiX2)
{cout << "Funkcija liecia x asi taske (" << kertXAsiX1 << ";" << kertXAsiY << ")" << endl;}
}
kertYAsiX = 0;
kertYAsiY = c;
cout << "Funkcija kerta y asi taske (" << kertYAsiX << ";" << kertYAsiY << ")" << endl;
if (a < 0)
{
cout << "Funkcijos didziausia reiksme yra " << yVirsunes << " kai x = " << xVirsunes << endl;
}
else if (a > 0)
{
cout << "Funkcijos maziausia reiksme yra " << yVirsunes << " kai x = " << xVirsunes << endl;
}
if (a > 0 && diskriminantas < 0)
{
cout << "f(x) > 0, kai x priklauso nuo -begalybes iki +begalybes" << endl;
}
else if (a > 0)
{
cout << "f(x) > 0, kai x priklauso nuo -begalybes iki " << kertXasiX2 << " ir nuo " << kertXAsiX1 << " iki +begalybes" << endl;
cout << "f(x) < 0, kai x priklauso nuo " << kertXasiX2 << " iki " << kertXAsiX1 << endl;
}
else if (a < 0 && diskriminantas < 0)
{
cout << "f(x) < 0, kai x priklauso nuo -begalybes iki +begalybes" << endl;
}
else if (a < 0)
{
cout << "f(x) > 0, kai x priklauso nuo " << kertXAsiX1 << " iki " << kertXasiX2 << endl;
cout << "f(x) < 0, kai x priklauso nuo -begalybes iki " << kertXAsiX1 << " ir nuo " << kertXasiX2 << " iki +begalybes" << endl;
}
return 0;
}
Sorry for non-english code
Upvotes: 0
Views: 119
Reputation: 71
You've got
(-b+sqrt(diskriminantas))/2 * a
in your code, which is the same as
a * (-b + sqrt(diskriminantas))/2
... and I think you can figure it out from there.
Upvotes: 1
Reputation: 662
The result you get is the result you want divided by 4. So changes are you forgot to multiply by 4 somewhere.
Upvotes: 0