代码计算故障排除c ++

时间:2014-04-15 19:54:04

标签: c++

谁能告诉我为什么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;
}

抱歉非英语代码

2 个答案:

答案 0 :(得分:1)

你有

(-b+sqrt(diskriminantas))/2 * a
代码中的

,与

相同
a * (-b + sqrt(diskriminantas))/2

......我想你可以从那里弄明白。

答案 1 :(得分:0)

你得到的结果是你想要的结果除以4.所以改变你忘了在某个地方乘以4。