Hơi dài, nhưng anh có thể tham khảo, em mới lớp 9 nên chỉ có bấy nhiêu trường hợp này thôi (a, b hay c = 0, delta < 0, …), em code = C, nhưng toàn code cơ bản nên chắc C++ vẫn đc (Visual của em code C++ xài printf vẫn chạy)
void SpecialCases(float a, float b, float c)
{
float g1, g2;
if(a + b + c == 0) {
g1 = 1;
g2 = c/a;
printf("x1 = %.2f\n", g1);
printf("x2 = %.2f\n", g2);
}
if(a - b + c == 0) {
g1 = -1;
g2 = -c/a;
printf("\nx1 = %.2f\n", g1);
printf("\nx2 = %.2f\n", g2);
}
}
void aEqual0(float a, float b) // when a = 0
{
float t;
if(a == 0) {
if(b == 0)
printf("x in R\n");
else
printf("x in empty\n");
} else {
t = -b/a;
printf("x = %.1f\n", t);
}
}
void bEqual0(float a, float b, float c) // When b = 0
{
float x1, x2;
if(c/b <= 0) {
x1 = sqrt(-c/a);
x2 = -sqrt(-c/a);
printf("x1 = %.2f\n", x1);
printf("\nx2 = %.2f\n", x2);
} else
printf("x in empty\n");
}
void cEqual0(float a, float b)// when c = 0
{
float y1, y2;
y1 = 0;
y2 = -b/a;
printf("x1 = %.2f\n", y1);
printf("\nx2 = %.2f\n", y2);
}
void FullEquation(float a, float b, float c)
{
float delta, z1, z2;
delta = pow(b, 2) - (4 * a * c);
if(delta < 0)
printf("x in empty\n");
if(delta == 0) {
z1 = -b/(2*a);
printf("x1 = x2 = %.2f\n", z1);
}
if(delta > 0) {
printf("equation has 2 roots\n");
z1 = (-b - sqrt(delta))/(2 * a);
z2 = (-b + sqrt(delta))/(2 * a);
printf("x1 = %.2f\n", z1);
printf("x2 = %.2f\n", z2);
}
}
void SecondEquationSolve(float a, float b, float c)
{
if(a + b + c == 0|| a - b + c == 0)
{
SpecialCases(a, b, c);
}
else if(a == 0) {
aEqual0(b, c);
}
else if(b == 0) {
bEqual0(a, b, c);
}
else if(c == 0) {
cEqual0(a, b);
}else
FullEquation(a, b, c);
}
void SecondEquation()
{
float a, b, c;
printf("Input a, b and c\n");
// Input a
printf("a = ");
scanf("%f", &a);
// Input b
printf("b = ");
scanf("%f", &b);
// Input c
printf("c = ");
scanf("%f", &c);
// Solve
SecondEquationSolve(a, b, c);
}
void FirstEquation()
{
float a, b;
//Input
printf("Input a, b\n");
//Input a
printf("a = ");
scanf("%f", &a);
//Input b
printf("b = ");
scanf("%f", &b);
aEqual0(a, b);
}