Професионална програма
Loading...
+ Нов въпрос
v.angelov92 avatar v.angelov92 7 Точки

Square root

Здравейте, писах програма, която решава квадратно уравнение, но на едно решение ми дава грешен отговор и Джъдж ми дава 60/100.

Това е кода:

#include <iostream>
#include<cmath>

using namespace std;

int main()
{
    double a, b, c, x1, x2;
    cin >> a >> b >> c;

    double discriminant = b * b - 4 * a * c;

    if(discriminant >= 0){
        x1 = (-b + sqrt(discriminant)) / (2 * a);
        x2 = (-b - sqrt(discriminant)) / (2 * a);
        cout << x1 << " " << x2 << endl;
    }   else{
        cout << "no roots" << endl;
    }

    return 0;
}

А това е заданието, на което се проваля:

a = 0.5; b = 5; c = 12.5.

Отговорът трябва да е само един(-5), но не мога да го изкарам.

Моля за помощ къде ми е грешката в алгоритъма?

Благодаря. :)

Тагове:
0
C++ Programming
Bobo_bobkata avatar Bobo_bobkata 48 Точки
Best Answer

Здравей проблема в кода е че като намираш дискриминантата и тя се получи точно нула  има друга формула която трябва да приложиш : -b / 2*а

Ето и кода:

#include <iostream>
#include<cmath>

using namespace std;

int main()
{
    double a, b, c, x1, x2;
    cin >> a >> b >> c;

    double discriminant = b * b - 4 * a * c;

    if(discriminant > 0){
        x1 = (-b + sqrt(discriminant)) / (2 * a);
        x2 = (-b - sqrt(discriminant)) / (2 * a);
        cout << x1 << " " << x2 << endl;
    } else if (discriminant == 0) {
        double x = (b * -1) / (2 * a);
        cout << x << endl;
    } else{
        cout << "no roots" << endl;
    }

    return 0;
}

0
v.angelov92 avatar v.angelov92 7 Точки

Благодаря за помощта. :)

0
kolioi avatar kolioi 621 Точки

Предполагам, че трябва да отпечаташ само корена, а програмата ти го отпечатва 2 пъти.

0