#32860: C++ 80% 最後一題錯誤


110409@gs.hs.ntnu.edu.tw (159520洪鈺承)

學校 : 不指定學校
編號 : 208361
來源 : [123.193.92.184]
最後登入時間 :
2022-11-13 11:42:30
a006. 一元二次方程式 | From: [123.193.92.184] | 發表日期 : 2022-11-13 11:47

include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int a;
    int b;
    int c;
    cin >> a;
    cin >> b;
    cin >> c;
    int D = pow(b, 2)-4*a*c;
    if (D < 0)
    {
        printf("%s\n", "No real root");
    }
    else if(D == 0)
    {
        int x = -b / 2*a;
        printf("%s", "Two same roots x=");
        printf("%d", x);
    }
    else
    {
        int x1 = (-b + sqrt(D)) / 2*a;
        int x2 = (-b - sqrt(D)) / 2*a;
        printf("%s", "Two different roots x1=");
        printf("%d", x1);
        printf("%s", " , x2=");
        printf("%d", x2);
    }
}

最後一題的答案為-1 , 但程式算出-4 , 有大神幫我找出程式的bug嗎感謝

 
#32861: Re: C++ 80% 最後一題錯誤


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a006. 一元二次方程式 | From: [39.10.25.127] | 發表日期 : 2022-11-13 13:14

include
#include
using namespace std;
int main()
{
    int a;
    int b;
    int c;
    cin >> a;
    cin >> b;
    cin >> c;
    int D = pow(b, 2)-4*a*c;
    if (D < 0)
    {
        printf("%s\n", "No real root");
    }
    else if(D == 0)
    {
        int x = -b / 2*a;
        printf("%s", "Two same roots x=");
        printf("%d", x);
    }
    else
    {
        int x1 = (-b + sqrt(D)) / 2*a;
        int x2 = (-b - sqrt(D)) / 2*a;
        printf("%s", "Two different roots x1=");
        printf("%d", x1);
        printf("%s", " , x2=");
        printf("%d", x2);
    }
}

最後一題的答案為-1 , 但程式算出-4 , 有大神幫我找出程式的bug嗎感謝


2*a要括號

 
ZeroJudge Forum