Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

lỗi viết code tìm nghiệm của phương trình bậc 2

21:52 04-06-2022 482 lượt xem 3 bình luận

đê bài là tìm nghiệm của phương trình bậc 2 
 nhưng tại sao khi em  nhập số thực a ,b,c ở cửa sổ console thì không hiện ra kết quả .em mong mọi người giải đáp thắc mắc của em , em cảm ơn ạ . 

đây là code của em ạ :

#include<iostream>
    #include<cmath>
    using namespace std;
    double detal(double a,double b,double c)
    {
        double detal;
        detal=b*b-4*a*c;    
        return detal;
    }
    int main()
    {
    cout<<"ax^2+bx+c=0"<<endl;
    double a;
    cout<<" hay nhap so a: ";
    cin>>a;
    double b;
    cout<<" hay nhap so b: ";
    cin>>b;
    double c;
    cout<<" hay nhap so c: ";
    cin>>c;
    double T=detal(a,b,c); 
    const int a1=a;
    const int b1=b;
    const int c1=c;
    switch (a1)
    {
    
    case 0:
        {
            switch (b1)
            {
            case 0:
            {
            switch (c1)
                {
            case 0:
                {
                cout<<" vo so nghiem  ";
                break;
                }
            default: 
                {    
            cout<<" vo nghiem ";
            break;
                }
                }
            default :
                {
                    cout<<"phuong trinh co nghiem duy nhat x = "<<-c/b;
                    break;
                }
            }
            }
        }
    default :
    {
        if(T>0)
        {
            cout<<"phuong trinh co 2 nghiem \n";
            cout<<" x1 = "<<(-b+sqrt(T))/2*a<<endl;
            cout<<" x2 = "<<(-b-sqrt(T))/2*a<<endl;
        }
        else if (T=0)
        {
        cout<<" phuong trinh nghiem kep x = "<<-b/2*a;
        }    
        else if (T<0)
        {
        cout<<" phuong trinh vo nghiem ";
        }
        break; 
            
    }
    }
    return 0;
    }    

 

 

 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
dododoicon đã bình luận 16:41 15-06-2022

#include<iostream>
#include<math.h>
using namespace std;
double detal(double& a, double& b, double& c)
{
    double detal = pow(b, 2) - 4 * a * c;
    return detal;
}
int main()
{
    cout << "ax^2+bx+c=0" << endl;
    double a;
    cout << " hay nhap so a: ";
    cin >> a;
    double b;
    cout << " hay nhap so b: ";
    cin >> b;
    double c;
    cout << " hay nhap so c: ";
    cin >> c;
    const int a1 = (double)a;
    const int b1 = (double)b;
    const int c1 = (double)c;
    double T = detal(a, b, c);
    switch (a1)
    {
    case 0:
    {
        switch (b1)
        {
        case 0:
        {
            switch (c1)
            {
            case 0:
            {
                cout << " vo so nghiem  ";
                break;
            }
            default:
            {
                cout << " vo nghiem ";
                break;
            }
            }
        default:
        {
            cout << "phuong trinh co nghiem duy nhat x = " << -c / b;
            break;
        }
        }
        }
    }
    default:
    {
        if (T > 0)
        {
            cout << "phuong trinh co 2 nghiem \n";
            cout << " x1 = " << (-1 * b + sqrt(detal(a, b, c)) / (2 * a))<< "\n";
            cout << " x2 = " << (-1 * b - sqrt(detal(a, b, c)) / (2 * a));
        }
        else
                if (T == 0)
                {
                    cout << " phuong trinh nghiem kep x = " << -b / 2 * a;
                }
                else
                    if (T < 0)
                    {
                        cout << " phuong trinh vo nghiem ";
                    }
        break;
    }
    }
    return 0;
}

dododoicon đã bình luận 16:05 15-06-2022

sai nhé hay thử cho a=b=c=0 xem đã sai ngay từ đầu rồi

dùng switch ko hợp lý hay quay lại dùng if thành thạo đã

muốn dùng switch thì ko nên làm thế này

Câu hỏi mới nhất