สมการกำลังสองอยู่ในรูปขวาน 2 + bx + ค. รากของสมการกำลังสองถูกกำหนดโดยสูตรต่อไปนี้ -

มีสามกรณี -
ข 2 <4*a*c - รากไม่จริงคือมันซับซ้อน
ข 2 =4*a*c - รากเป็นของจริงและรากทั้งสองเหมือนกัน
ข 2 > 4*a*c - รากเป็นของจริงและรากทั้งสองต่างกัน
โปรแกรมหารากของสมการกำลังสองมีดังต่อไปนี้
ตัวอย่าง
#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;
} ผลลัพธ์
Roots are real and same. Root 1 = Root 2 =-1
ในโปรแกรมข้างต้น ขั้นแรกให้คำนวณการเลือกปฏิบัติ หากมีค่ามากกว่า 0 แสดงว่ารากทั้งสองเป็นของจริงและต่างกัน
ซึ่งแสดงให้เห็นโดยข้อมูลโค้ดต่อไปนี้
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;
} หาก discriminant เท่ากับ 0 แสดงว่ารากทั้งสองเป็นของจริงและเหมือนกัน ซึ่งแสดงให้เห็นโดยข้อมูลโค้ดต่อไปนี้
else if (discriminant == 0) {
cout << "Roots are real and same." << endl;
x1 = (-b + sqrt(discriminant)) / (2*a);
cout << "Root 1 = Root 2 =" << x1 << endl;
} หาก discriminant น้อยกว่า 0 แสดงว่ารากทั้งสองนั้นซับซ้อนและต่างกัน ซึ่งแสดงให้เห็นโดยข้อมูลโค้ดต่อไปนี้
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;
}