[C++] Giải phương trình bậc 4

Thảo luận trong 'Visual C++' bắt đầu bởi Trần Văn Cường, 17/6/16.

  1. Trần Văn Cường

    Trần Văn Cường I love CNTT Thành viên BQT Thành viên BQT

    Tham gia ngày:
    8/11/15
    Bài viết:
    3,693
    Đã được thích:
    43
    Điểm thành tích:
    48
    Giới tính:
    Nam
    Nghề nghiệp:
    Sinh Viên
    Nơi ở:
    Quảng Ninh thân yêu!
    Web:

    [C++] Giải phương trình bậc 4

    Ngôn ngữ lập trình: C++
    Phần mềm: Visual Studio

    giai-phuong-trinh.gif

    CODE:
    Select All
    #include <iostream>
    using namespace std;

    //  Giải phuong trình bậc 4
    // aX^4 +bX^2 + c = 0
    void GiaiPhuongTrinhBac_1(float afloat b)
    {
        if (
    == 0)
        {
            if (
    == 0)
                
    cout << "Phuong Trinh VSN";
            else
                
    cout << "Phuong Trinh VN";
        }
        else
        {
            
    cout << "Phuong Trinh co nghiem duy nhat x = " << (float)-a;
        }
    }

    // TypeResult :
    // -1 : Không giải phương trình bậc 2
    // 0 : PT VN
    // 1 : PT có nghiệm kép x1 = x2 = x
    // 3 : PT có 2 nghiệm x1, x2
    void GiaiPhuongTrinhBac_2(float afloat bfloat cint &TypeResultfloat &x1float &x2float &x)
    {
        if (
    == 0)
        {
            
    TypeResult = -1;

            
    GiaiPhuongTrinhBac_1(bc);
        }
        else
        {
            
    float delta c;

            if (
    delta 0)
            {
                
    TypeResult 0;
                
    //cout << "Phuong trinh VN";
            
    }
            else
            if (
    delta == 0)
            {
                
    TypeResult 1;
                
    = -a;
                
    //cout << "Phuong trinh co nghiem kep x1 = x2 = " << -b / 2 * a;
            
    }
            else
            {
                
    TypeResult 2;
                
    x1 = (-sqrt(delta)) / (a);
                
    x2 = (-sqrt(delta)) / (a);

                
    /*float x1 = (-b + sqrt(delta)) / (2 * a);
                float x2 = (-b - sqrt(delta)) / (2 * a);

                cout << "Phuong trinh co 2 nghiem phan biet :\n";
                cout << "x1 = " << x1 << "\n";
                cout << "x2 = " << x2 << "\n";*/
            
    }
        }
    }

    void GiaiPhuongTrinhBac_4(float afloat bfloat c)
    {
        
    int TypeResult 0;
        
    float x1 0x2 00x3 0x4 0;

        
    // 0 : Giải phương trình bậc 4 với đủ tham số a, b, c
        // 1 : Giải phương trình bậc 4 không đủ tham số
        
    int flag 0;

        if (
    == 0//  bX^2 + c = 0
        
    {
            
    GiaiPhuongTrinhBac_2(b0cTypeResultx1x2x);
            
    flag 1;
        }
        else
        {
            
    GiaiPhuongTrinhBac_2(abcTypeResultx1x2x);
            
    flag 0;
        }

        if (
    TypeResult == 0// phương trình VN
        
    {
            
    cout << "Phuong trinh VN";
        }

        if (
    TypeResult == 1// phương trình có nghiệm kép x1 = x2
        
    {
            if (
    flag == 0// flag = 0 : Giải phương trình bậc 4 với đủ tham số a, b, c
            
    {
                if (
    0)
                {
                    
    x1 sqrt(x);
                    
    x2 = -sqrt(x);

                    
    cout << "Phuong trinh Co nghiem \n";
                    
    cout << "x1 = " << x1 << "\n";
                    
    cout << "x2 = " << x2 << "\n";
                }
                else
                {
                    
    cout << "Phuong trinh Co nghiem kep x1 = x2 = " << x;
                }
            }
            else
            {
                
    cout << "Phuong trinh Co nghiem kep x1 = x2 = " << x;
            }
        }

        if (
    TypeResult == 2// phương trình có 2 nghiệm phân biết x1 , x2
        
    {
            
    // Có 2 nghiệm với PT bậc 2
            //==> Có 4 nghiệm với Phương trình bậc 4

            
    if (flag == 0// flag = 0 : Giải phương trình bậc 4 với đủ tham số a, b, c
            
    {
                if (
    x1 >= 0)
                {
                    
    cout << "x1 = " << sqrt(x1) << "\n";
                    
    cout << "x2 = " << -sqrt(x1) << "\n";
                }

                if (
    x2 >= 0)
                {
                    
    cout << "x3 = " << sqrt(x2) << "\n";
                    
    cout << "x4 = " << -sqrt(x2) << "\n";
                }

                if (
    x1 && x2 0)
                    
    cout << "Phuong Trinh VN";

            }
            else
            {
                
    cout << "Phuong trinh co 2 nghiem phan biet :\n";
                
    cout << "x1 = " << x1 << "\n";
                
    cout << "x2 = " << x2 << "\n";
            }
        }
    }

    int main()
    {
        
    float abc;
        
    cout << "a = ";
        
    cin >> a;

        
    cout << "b = ";
        
    cin >> b;

        
    cout << "c = ";
        
    cin >> c;

        
    GiaiPhuongTrinhBac_4(abc);
        
    cout << endl;
        
    system("pause");
    }
     

    Bình Luận Bằng Facebook

    data-href="https://cnttqn.com/threads/c-giai-phuong-trinh-bac-4.2199.html"