Viết chương trình giải phương trình bậc 2 trong C

Home/Kiến thức/Cách giải phương trình bậc 2-Code giải phương trình bậc 2 trong C/C++
Kiến thức

Cách giải phương trình bậc 2-Code giải phương trình bậc 2 trong C/C++

admin Send an email
0 22 2 minutes read

Bạn đang xem: Cách giải phương trình bậc 2-Code giải phương trình bậc 2 trong C/C++

Cách giải phương trình bậc 2 trong C/C++

Bởi

Võ Văn Tâm

16

122369

Cách giải phương trình bậc 2 thì chúng ta đã được học ở lớp dưới rồi phải không nào ? Vậy giải phương trình bậc 2 trong C/C++ thì sẽ như thế nào ? Hôm nay chúng ta sẽ cùng tìm hiểu.

Cách giải phương trình bậc 2

Viết chương trình giải phương trình bậc 2 trong C
Viết chương trình giải phương trình bậc 2 trong C
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. (a0) (1)

Ở các lớp dưới ta đã có phương pháp giải bằng cách tính delta:

  • Đầu tiên tính delta = b² 4ac
  • 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

  • Dùng một vòng do whileđể nhập a, b, c nếu a = 0, thì 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 giaiPTtrả về kiểu intchính là số nghiệm của phương trình (1).
  • Chúng ta sẽ đưa tham chiếu 2 biến x1 , x2 vào hàm giaiPTđể gán giá trị hai nghiệm.
  • Nếu pt (1) vô nghiện thì giaiPTsẽ trả về 0 , đồng thời gán x1 = x2 =0 .
  • Nếu pt (1) có nghiệm kép thì giaiPTsẽ trả về 1 , đồng thời gán x1 = x2 = -b/2a .
  • Nếu pt (1) có 2 nghiệm thì giaiPTsẽ trả về 2 , gán x1 = (-b+delta ) / 2a x = (-b-delta ) / 2a .

Code 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
#include
#include
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 bietnx1=%.4f nx2=%.4f,x1,x2);
}
}
0
1
2
3
4
5
6
7
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 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
46
#include
#include
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;
}
}
0
1
2
3
4
5
6
7
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

Bài học của mình đến đây là kết thúc.

  • TAGS
  • bài tập c++

  • c++

  • giải thuật

Facebook
Twitter
Pinterest
WhatsApp

https://vovantam.com/

Chia sẻ kiến thức lập trình là sở thích và đam mê của mình!

Chuyên mục: Kiến thức

admin Send an email
0 22 2 minutes read