Задача:
Даны действительные числа [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
У Вас значительный прогресс, но…
— Для кодирования формул (даже из одного символа!) нужно использовать latex).
— Что плохого в х = -2 (последний тест)?
— Забыли вставить код программы. Только ссылка на ideOne (видимо правильная программа).
— Ошибочно указана рубрика.
— a, b, c (a≠0) — должна быть формулой latex,
a — должна быть формулой latex,
…
Так понятнее? Сравните как выглядит ‘a’ в формулах и вне. Это разные знаки.
— «Код Программы» — лучше слово «программа» написать с маленькой буквы.
Работу зачёл, но эти «мелочи» нужно поправить.