谁能告诉我为什么kertXAsiX1 = 1.20711和kertXasiX2 = 0.207107? 什么时候应该是4.82842和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;
}
抱歉非英语代码
答案 0 :(得分:1)
你有
(-b+sqrt(diskriminantas))/2 * a
代码中的,与
相同a * (-b + sqrt(diskriminantas))/2
......我想你可以从那里弄明白。
答案 1 :(得分:0)
你得到的结果是你想要的结果除以4.所以改变你忘了在某个地方乘以4。