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

Cách giải phương trình bậc 2 thì tất cả 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 tất cả chúng ta sẽ cùng khám phá .

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

cach-giai-phuong-trinh-bac-2
Phương trình bậc 2 là phương trình có dạng : ax² + bx + c = 0. ( a ≠ 0 ) ( 1 )
Ở những lớp dưới ta đã có giải 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 giaiPT trả về kiểu int chí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ì 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, đồng thời 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  x = (-b-√delta ) / 2a .

Code C

012345678910111213141516171819202122232425262728293031323334353637383940414243

#include

#include

intgiaiPT(floata,floatb,floatc,floatvà x1, float và x2 ) {

float delta = b * b – 4 * a * c ;

if(delta<0){

x1=x2=0.0;

return0;

}

elseif(delta==0){

x1=x2=-b/(2*a);

return1;

}

else{

delta=sqrt(delta);

x1=(-b+delta)/(2*a);

x2=(-b-delta)/(2*a);

return2;

}

}

intmain(){

floata,b,c;

floatx1,x2;

do{

printf(” Nhap a ( a ! = 0 ) : “);

scanf(” % f “,và a ) ;

printf(” Nhap b : “);

scanf(” % f “,và b ) ;

printf(” Nhap c : “);

scanf(” % f “,và c ) ;

}

while(!a);/ / Nếu a = 0 thì nhập lại

intnumNo=giaiPT(a,b,c,x1,x2);

if(numNo==0){

printf(” Phuong trinh da cho vo nghiem “);

}

elseif(numNo==1){

printf(” Phuong trinh da cho co nghiem kep x = %. 4 f “,x1);

}

else{

printf(” Phuong trinh da cho co hai nghiem phan biet \ nx1 = %. 4 f \ nx2 = %. 4 f “,x1,x2);

}

}

01234567
Nhap a ( a ! = 0 ) : 3Nhap b : – 5Nhap c : 2Phuong trinh da cho co hai nghiem phan bietx1 = 1.0000×2 = 0.6667
Code C + +

012345678910111213141516171819202122232425262728293031323334353637383940414243444546

#include

#include

usingnamespacestd;

intgiaiPT(floata,floatb,floatc,floatvà x1, float và x2 ) {

float delta = b * b – 4 * a * c ;

if(delta<0){

x1=x2=0.0;

return0;

}

elseif(delta==0){

x1=x2=-b/(2*a);

return1;

}

else{

delta=sqrt(delta);

x1=(-b+delta)/(2*a);

x2=(-b-delta)/(2*a);

return2;

}

}

intmain(){

floata,b,c;

floatx1,x2;

do{

cout<<" Nhap a ( a ! = 0 ) : ";

cin>>a;

cout<<" Nhap b : ";

cin>>b;

cout<<" Nhap c : ";

cin>>c;

}

while(!a);

intnumNo=giaiPT(a,b,c,x1,x2);

if(numNo==0){

cout<<" Phuong trinh da cho vo nghiem ";

}

elseif(numNo==1){

cout<<" Phuong trinh da cho co nghiem kep x = %. 4 f "<

}

else{

cout<<" Phuong trinh da cho co hai nghiem phan biet "<

cout<<" x1 = "<

cout<<" x2 = "<

}

}

01234567
Nhap a ( a ! = 0 ) : 3Nhap b : – 5Nhap c : 2Phuong trinh da cho co hai nghiem phan bietx1 = 1×2 = 0.666667
Bài học của mình đến đây là kết thúc .