代码计算疑难解答c++

code calculation troubleshooting c++

本文关键字:c++ 疑难解答 计算 代码      更新时间:2023-10-16

有人能告诉我为什么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 cnreiksmes" << 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;
}

抱歉使用非英语代码

你有

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

在您的代码中,这与相同

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

我想你可以从那里找到答案。

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