Giải phương trình trùng phương ax4 + bx2 + c = 0 bằng máy tính
#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 X1, X2, a, b, c; do { cout<<"Nhap a (a!=0): "; cin >> a; cout<<"Nhap b: "; cin >> b; cout<<"Nhap c: "; cin >> c; } while (!a); //nếu a=0 thì nhập lại if (giaiPT(a, b, c, X1, X2) == 0) { cout<< "Phuong trinh vo nghiem"; } else if( giaiPT(a, b, c, X1, X2) == 1 ) { if (X1 < 0) cout << "Phuong trinh vo nghiem"; else if (X1 == 0) cout << "Phuong trinh co mot nghiem x: " << 0; else { cout<<"Phuong trinh co hai nghiem"<<endl; cout << "x1: " << sqrt(X1) << endl; cout << "x2: " << -sqrt(X1) << endl; } } else { if (X1 < 0) { if(X2 < 0) cout<< "Phuong trinh vo nghiem"; else if(X2 == 0) cout << "Phuong trinh co mot nghiem x: " << 0; else { cout << "Phuong trinh co hai nghiem" << endl; cout << "x1: " << sqrt(X2) << endl; cout << "x2: " << -sqrt(X2) << endl; } } else if (X1 == 0) { if(X2 < 0) cout << "Phuong trinh co mot nghiem x: " << 0; else { cout << "Phuong trinh co ba nghiem" << endl; cout << "x1: " << sqrt(X2) << endl; cout << "x2: " << -sqrt(X2) << endl; cout << "x3: " << 0; } //X2 không thể bằng 0 nếu bằng 0 thì là nghiệm kép } else { if (X2 < 0) { cout << "Phuong trinh co hai nghiem" << endl; cout << "x1: " << sqrt(X1) << endl; cout << "x2: " << -sqrt(X1) << endl; } else if (X2 == 0) { cout << "Phuong trinh co ba nghiem" << endl; cout << "x1: " << sqrt(X1) << endl; cout << "x2: " << -sqrt(X1) << endl; cout << "x3: " << 0; } else { cout << "Phuong trinh co bon nghiem" << endl; cout << "x1: " << sqrt(X1) << endl; cout << "x2: " << -sqrt(X1) << endl; cout << "x3: " << sqrt(X2) << endl; cout << "x4: " << -sqrt(X2) << endl; } } } system("pause"); return 0; } |