Найти вещественные корни квадратного уравнения - C (СИ)
Формулировка задачи:
Всем привет, реализуйте на Си, пожалуйста.Как мне сказали это вроде не сложно. Заранее благодарен.
Даны произвольные числа a,b,c. Найти вещественные корни уравнения ax^2+bx+c=0; Либо сообщить, что таких корней нет.
Решение задачи: «Найти вещественные корни квадратного уравнения»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream>
// подключил заг. файлы.
void main()
{
int t;
float a, b, c,x,D,x1,x2;
printf("input a,b,c\n");
scanf_s("%f%f%f", &a, &b, &c);
if (a == 0)
{
if (b != 0 && c != 0)
{
x = -c / b;
t = 1;
printf("x=%f ", x);
printf("t=%d ", t);
// t=1 одно решение
}
else if (b!=0&&c==0 )
{
x = 0;
t = 1;
printf("t=%d ", t);
printf("x=%f ", x);
//t=1 одно решение
}
else if (b == 0 && c != 0)
{
t = 0;
printf("t=%d ", t);
//t=0 нет решений
}
else if (b == 0 && c == 0)
{
t = 2;
printf("t=%d ", t);
//t=2 бесконечное мн-во решений
}
}
else if (a != 0 && b != 0 && c != 0)
{
D = (b*b) - (4 * a*c);
if (D > 0)
{
x1 = (-b + sqrt(D)) / (2 * a);
x2 = (-b - sqrt(D)) / (2 * a);
t = 3;
// t=3 два решения
printf("x1=%f ", x1);
printf("x2=%f ", x2);
printf("t=%d ", t);
}
else if (D==0)
{
x = -b / (2 * a);
t=1;
printf("t=%d ", t);
printf("x=%f ", x);
//t=1 одно решение
}
else if (D < 0)
{
t = 0;
printf("t=%d ", t);
//t=0 нет решений
}
}
else if (a != 0 && b != 0 && c == 0)
{
//ax^2+bx=0
D = b*b;
x1 = (-b + sqrt(D)) / (2 * a);
x2 = (-b - sqrt(D)) / (2 * a);
t = 3;
// t=3 два решения
printf("x1=%f ", x1);
printf("x2=%f ", x2);
printf("t=%d ", t);
}
else if (a != 0 && b == 0 && c != 0)
{
if (c > 0 && a > 0)
{
t = 0;
//t=0 нет корней
printf("t=%d ", t);
}
else if (c > 0 && a < 0)
{
x1 = -sqrt(-c / a);
x2 = sqrt(-c / a);
t = 3; //t=3 два решения
printf("x1=%f ", x1);
printf("x2=%f ", x2);
printf("t=%d ", t);
}
else if (c < 0 && a>0)
{
x1 = -sqrt(c / a);
x2 = sqrt(c / a);
t = 3;//t=3 два решения
printf("x1=%f ", x1);
printf("x2=%f ", x2);
printf("t=%d ", t);
}
else if (c < 0 && a < 0)
{
t = 0;//нет решений
printf("t=%d ", t);
}
}
system("pause");
}