ในปัญหานี้ เราได้รับสมการกำลังสองของประเภท ax2 + bx + c โดยที่ a,b และ c เป็นค่าคงที่ งานของเราคือสร้างโปรแกรมเพื่อค้นหาจำนวนคำตอบในสมการกำลังสองใน C++
คำอธิบายปัญหา − ในที่นี้ เราต้องหาจำนวนคำตอบของสมการกำลังสองที่มีได้ไม่เกิน 2 คำตอบ
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ตัวอย่างที่ 1:
ป้อนข้อมูล − 3x 2 + 7x + 4
ผลผลิต − 2
คำอธิบาย - คำตอบของสมการทั้งสองคือ 1 และ 4/3
ตัวอย่างที่ 2:
ป้อนข้อมูล − x 2 - 4x + 4
ผลผลิต − 1
คำอธิบาย - คำตอบของสมการคือ 2
ป้อนข้อมูล − 2x 2 + 2x + 2
ผลผลิต − 0
คำอธิบาย:ไม่มีคำตอบของสมการ
แนวทางการแก้ปัญหา:
ในการหาจำนวนคำตอบ เราต้องการธรรมชาติของคำตอบของสมการกำลังสอง ซึ่งหาได้จากค่า discriminant (D)
รากของสมการถูกกำหนดโดยสูตร
= −𝑏 ± √𝑏. D = ( (b^2) - (4*a*c) )
ดังนั้นค่าดิสคริมิแนนต์จึงให้จำนวนรูตของสมการกำลังสอง
-
ถ้า D =0 จำนวนคำตอบคือ 1
-
ถ้า D> 0 จำนวนคำตอบคือ 2
-
ถ้า D <0 จำนวนของการแก้ปัญหาคือ 0 เนื่องจากค่าของรูทของจำนวนลบเป็นจำนวนจินตภาพ
อัลกอริทึม:
-
ขั้นตอนที่ 1 หาค่าของ D, D =((b^2) - 4*a*c)
-
ขั้นตอนที่ 2 − if(D> 0) พิมพ์ 2 โซลูชั่น
-
ขั้นตอนที่ 3 − if(D =0) พิมพ์ 1 โซลูชัน
-
ขั้นตอนที่ 4 − if(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