Bài toán giải phương trình bậc hai là một trong những bài toán thường gặp của những người mới học. Và cách giải phương trình bậc 2 thì không phải xa lạ đúng không ạ. Và chúng ta đã từng được học ở lớp dưới rồi. Vậy đối với giải phương trình bậc 2 trong C++ thì sẽ như thế nào? Cách viết chương trình giải phương trình bậc 2 c++ ra sao? Nó có khó như chúng ta thường nghĩ hay không? Đó là một bài toán cần chúng ta đi tìm lời giải. Nào hãy cùng bắt tay vào giải ngay thôi nào các bạn!
Để viết được chương trình giải phương trình bậc 2 c++ đầu tiên bạn phải biết cách giải phương trình bậc 2
Cách giải phương trình bậc 2

Phương trình bậc 2
Phương trình bậc 2 là phương trình có dạng: ax² +bx + c = 0. (a≠0) (1)
Phương pháp giải là chúng ta thực hiện bằng cách tính delta:
- Đầu tiên tính delta bằng công thức delta = b² – 4ac
Căn cứ vào delta thì chúng ta có thể tìm ra nghiệm của phương trình như sau
- Nếu delta < 0 thì kết luận vô nghiệm
- Nếu delta = 0 thì có nghiệm kép
- Nếu delta > 0 thì sẽ có 2 nghiệm phân biệt
Ý tưởng để giải bài toán như sau
- Dùng một vòng do while để nhập a, b, c nếu a = 0, thì quay lại nhập lại.
- Chúng ta dùng hàm sqrt() trong thư viện math.h để tính căn delta hoặc tính căn không dùng hàm sqrt()tại đây.
- Chúng ta tạo hàm giaiPT và trả về kiểu int chính là số nghiệm của phương trình (1).
- Đưa tham chiếu 2 biến x1 và x2 vào hàm giaiPT để gán giá trị 2 nghiệm.
- Nếu pt (1) vô nghiệm thì giaiPT sẽ trả về 0 , đồng thời gán x1 = x2 =0 .
- Nếu pt (1) có nghiệm kép thì giaiPT sẽ trả về 1 , và gán x1 = x2 = -b/2a .
- Nếu pt (1) có 2 nghiệm thì giaiPT sẽ trả về 2 , gán x1 = (-b+√delta ) / 2a ; x2 = (-b-√delta ) / 2a .
Viết Chương trình giải phương trình bậc 2 C++ như thế nào?
Code bằng ngôn ngữ C
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#include<stdio.h> #include<math.h> int giaiPT(float a, float b, float c,float &x1, float &x2){ float delta = b*b – 4*a*c; if(delta<0){ x1=x2=0.0; return 0; } else if(delta==0){ x1 = x2 = -b/(2*a); return 1; } else{ delta = sqrt(delta); x1 = (-b + delta) / (2*a); x2 = (-b – delta) / (2*a); return 2; } } int main(){ float a,b,c; float x1,x2; do{ printf(“Nhap a (a!=0): “); scanf(“%f”,&a); printf(“Nhap b: “); scanf(“%f”,&b); printf(“Nhap c: “); scanf(“%f”,&c); } while(!a);// Nếu a=0 thì nhập lại int numNo = giaiPT(a,b,c,x1,x2); if(numNo == 0) { printf(“Phuong trinh da cho vo nghiem”); } else if(numNo == 1){ printf(“Phuong trinh da cho co nghiem kep x=%.4f”,x1); } else{ printf(“Phuong trinh da cho co hai nghiem phan biet\nx1=%.4f \nx2=%.4f”,x1,x2); } } |
|
Nhap a (a!=0): 3
Nhap b: -5 Nhap c: 2 Phuong trinh da cho co hai nghiem phan biet x1=1.0000 x2=0.6667 |
Code bằng ngôn ngữ C++
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#include<iostream> #include<math.h> using namespace std; int giaiPT(float a, float b, float c,float &x1, float &x2){ float delta = b*b – 4*a*c; if(delta<0){ x1=x2=0.0; return 0; } else if(delta==0){ x1 = x2 = -b/(2*a); return 1; } else{ delta = sqrt(delta); x1 = (-b + delta) / (2*a); x2 = (-b – delta) / (2*a); return 2; } } int main(){ float a,b,c; float x1,x2; do{ cout<<“Nhap a (a!=0): “; cin>>a; cout<<“Nhap b: “; cin>>b; cout<<“Nhap c: “; cin>>c; } while(!a); int numNo = giaiPT(a,b,c,x1,x2); if(numNo ==0 ) { cout<<“Phuong trinh da cho vo nghiem”; } else if(numNo==1){ cout<<“Phuong trinh da cho co nghiem kep x=%.4f” << x1; } else{ cout<<“Phuong trinh da cho co hai nghiem phan biet”<<endl; cout<< “x1=” << x1<<endl; cout<< “x2=” << x2<<endl; } } |
Nhap a (a!=0): 3
Nhap b: -5 Nhap c: 2 Phuong trinh da cho co hai nghiem phan biet x1=1 x2=0.666667 |
Nếu bạn là người mới học viết chương trình và đang gặp khó khăn với những bài tập cơ bản thì trên đây là hướng dẫn về cách “viết chương trình giải phương trình bậc 2 C++” mà bạn có thể tham khảo. Nó hoàn toàn không khó phải không nào. Mong rằng nó sẽ giúp ích phần nào để bổ sung kiến thức cho bạn. Chúc các bạn học tập thật tốt!