Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để tìm tất cả gốc rễ của phương trình bậc hai

Phương trình bậc hai có dạng ax 2 + bx + c. Nghiệm của phương trình bậc hai được cho bởi công thức sau -

Chương trình C ++ để tìm tất cả gốc rễ của phương trình bậc hai

Có ba trường hợp -

b 2 <4 * a * c - Rễ không có thật, tức là chúng phức tạp

b 2 =4 * a * c - Rễ là thật và cả hai rễ đều giống nhau.

b 2 > 4 * a * c - Rễ là thật và cả hai rễ đều khác nhau

Chương trình tìm nghiệm nguyên của phương trình bậc hai được đưa ra như sau.

Ví dụ

#include<iostream>
#include<cmath>
using namespace std;
int main() {
   int a = 1, b = 2, c = 1;
   float discriminant, realPart, imaginaryPart, x1, x2;
   if (a == 0) {
      cout << "This is not a quadratic equation";
   }else {
      discriminant = b*b - 4*a*c;
      if (discriminant > 0) {
         x1 = (-b + sqrt(discriminant)) / (2*a);
         x2 = (-b - sqrt(discriminant)) / (2*a);
         cout << "Roots are real and different." << endl;
         cout << "Root 1 = " << x1 << endl;
         cout << "Root 2 = " << x2 << endl;
      } else if (discriminant == 0) {
         cout << "Roots are real and same." << endl;
         x1 = (-b + sqrt(discriminant)) / (2*a);
         cout << "Root 1 = Root 2 =" << x1 << endl;
      }else {
         realPart = (float) -b/(2*a);
         imaginaryPart =sqrt(-discriminant)/(2*a);
         cout << "Roots are complex and different." << endl;
         cout << "Root 1 = " << realPart << " + " << imaginaryPart << "i" <<end;
         cout << "Root 2 = " << realPart << " - " << imaginaryPart << "i" <<end;
      }
   }
   return 0;
}

Đầu ra

Roots are real and same.
Root 1 = Root 2 =-1

Trong chương trình trên, đầu tiên giá trị phân biệt được tính. Nếu nó lớn hơn 0, thì cả hai gốc đều thực và khác nhau.

Điều này được chứng minh bằng đoạn mã sau.

if (discriminant > 0) {
   x1 = (-b + sqrt(discriminant)) / (2*a);
   x2 = (-b - sqrt(discriminant)) / (2*a);
   cout << "Roots are real and different." << endl;
   cout << "Root 1 = " << x1 << endl;
   cout << "Root 2 = " << x2 << endl;
}

Nếu số phân biệt bằng 0 thì cả hai căn đều thực và giống nhau. Điều này được chứng minh bằng đoạn mã sau.

else if (discriminant == 0) {
   cout << "Roots are real and same." << endl;
   x1 = (-b + sqrt(discriminant)) / (2*a);
   cout << "Root 1 = Root 2 =" << x1 << endl;
}

Nếu số phân biệt nhỏ hơn 0, thì cả hai gốc đều phức tạp và khác nhau. Điều này được chứng minh bằng đoạn mã sau.

else {
   realPart = (float) -b/(2*a);
   imaginaryPart =sqrt(-discriminant)/(2*a);
   cout << "Roots are complex and different." << endl;
   cout << "Root 1 = " << realPart << " + " << imaginaryPart << "i" << endl;
   cout << "Root 2 = " << realPart << " - " << imaginaryPart << "i" << endl;
}