Задача:
Даны действительные числа [latex]a[/latex], [latex]b[/latex], [latex]c[/latex] ([latex]a[/latex]≠0). Выяснить, имеет ли уравнение [latex]ax^2 + bx + c = 0[/latex] действительные корни. Если корни имеются, то найти их. В противном случае ответом должно служить сообщение, что корней нет.
Тесты:
Ввод: |
|
|
Вывод: |
Результат |
a |
b |
c |
|
|
0 |
*ввод не доступен* |
*ввод не доступен* |
неверный ввод |
Нарушено первоначальное условие, дальнейший ввод не доступен |
1 |
-3 |
2 |
уравнение имеет два действительных корня:x1=1.00×2=2.00 |
уравнение обладает двумя действительными корнями, которые были найдены |
9 |
54 |
81 |
уравнение имеет один действительный корень:x0=-3.00 |
уравнение обладает единственным действительным корнем, который был найден |
3 |
11 |
19 |
уравнение не имеет действительных корней |
корни уравнения отсутствуют |
4 |
21 |
24 |
уравнение имеет два действительных корня:x1=-6.73×2=-14.27 |
уравнение обладает двумя действительными корнями, которые были найдены |
-2 |
-3.7 |
5 |
уравнение имеет два действительных корня:x1=5.51×2=-1.81 |
уравнение обладает двумя действительными корнями, которые были найдены |
Код программы:
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
|
#include <iostream> #include <math.h> using namespace std; int main() { double a, b, c, D, d, x0, x1, x2; //Параметры, дискриминант и его корень, возможные корни уравнения printf("ax^2+bx+c=0 \n"); printf("введите параметр 'a': \n"); scanf("%lf", &a); if(a == 0) { printf("неверный ввод \n"); } else { printf("введите параметр 'b': \n"); scanf("%lf", &b); printf("введите параметр 'c': \n"); scanf("%lf", &c); D=(b*b)-4*(a*c); if(D<0) { printf("уравнение не имеет действительных корней"); } else if(D==0) { printf("уравнение имеет один действительный корень:' \n"); x0 = -b/(2*a); printf("x=%5.2lf \n", x0); } else { printf("уравнение имеет два действительных корня: \n"); d=sqrt(D); x1= (-b + d )/2; x2= (-b - d)/2; printf("x1=%5.2lf \n",x1); printf("x2=%5.2lf \n",x2); } } return 0; } |
Отчёт:
В случае, если параметр a не равен нулю, программа позволяет ввести последующие параметр b и константу c. После этого программа ищет дискриминант D по формуле [latex]b^2-4ac[/latex]. Если дискриминант меньше нуля, то программа выдаст сообщение об отсутствии действительных корней в уравнении. Если же дискриминант равен нулю, тогда получим сообщение о наличии единственного корня уравнения x0, который будет посчитан по формуле [latex]\frac{-b}{2a}[/latex]. В случае, когда дискриминант больше нуля, программа сообщит, что у уравнения есть два действительных корня, после чего будет посчитан корень от дискриминанта d для удобства нахождения первого корня x1: [latex]\frac{-b+d}{2a}[/latex], а затем второго x2: [latex]\frac{-b-d}{2a}[/latex]. Оба корня будут выведены на экран.
Ссылка на дубликат кода в Ideone: http://ideone.com/ZQv9AS
Related Images:
Для отправки комментария необходимо войти на сайт.