ในปัญหานี้ เราได้รับสมการกำลังสองแบบ ax² + bx + c โดยที่ a,b และ c เป็นค่าคงที่ งานของเราคือสร้างโปรแกรมหาจำนวนคำตอบของสมการกำลังสองใน C++
คำอธิบายปัญหา – ที่นี่เราต้องหาจำนวนคำตอบของสมการกำลังสองที่อาจมีได้สูงสุด 2 คำตอบ
ตัวอย่างเพื่อความเข้าใจ
ตัวอย่าง 1:
อินพุต – 3x² + 7x + 4
เอาต์พุต – 2
คำอธิบาย – คำตอบสองคำตอบคือ 1 และ 4/3
ตัวอย่าง 2:
อินพุต – x² - 4x + 4
เอาต์พุต – 1
คำอธิบาย – คำตอบของสมการคือ 2
อินพุต – 2x² + 2x + 2
เอาต์พุต – 0
คำอธิบาย: ไม่มีคำตอบสำหรับสมการนี้
วิธีแก้ปัญหา:
เพื่อหาจำนวนคำตอบ เราต้องใช้ลักษณะของคำตอบของสมการกำลังสอง ซึ่งหาได้จากค่าของ discriminant (D)
รากของสมการได้จากสูตร
x = (-b ± √(b² - 4ac)) / 2a D = (b²) - (4*a*c)
ดังนั้น ค่าของ discriminant จะบอกจำนวนรากของสมการกำลังสอง
- ถ้า D = 0 จำนวนคำตอบคือ 1
- ถ้า D > 0 จำนวนคำตอบคือ 2
- ถ้า D < 0 จำนวนคำตอบคือ 0 เนื่องจากรากของจำนวนลบเป็นจำนวนจินตภาพ
อัลกอริทึม:
- ขั้นตอนที่ 1 – หาค่า D, D = ((b²) - 4*a*c)
- ขั้นตอนที่ 2 – ถ้า D > 0 แสดง 2 คำตอบ
- ขั้นตอนที่ 3 – ถ้า D = 0 แสดง 1 คำตอบ
- ขั้นตอนที่ 4 – ถ้า D < 0 แสดง 0 คำตอบ
ตัวอย่าง
#include <iostream>
using namespace std;
int checkSolution(int a, int b, int c) {
if (((b * b) - (4 * a * c)) > 0)
return 2;
else if (((b * b) - (4 * a * c)) == 0)
return 1;
else
return 0;
}
int main() {
int a = 2, b = 2, c = 3;
cout << "The quadratic equation is " << a << "x^2 + " << b << "x + " << c << " has ";
cout << checkSolution(a, b, c) << " solutions ";
return 0;
}เอาต์พุต:
The quadratic equation is 2x^2 + 2x + 3 has 0 solutions