Вирішити квадратне рівняння, завдання на pascal, програмування для початківців
Формулювання. Дано дійсні числа a. b і c. причому a відмінно від 0. Вирішити квадратне рівняння ax 2 + bx + c = 0 або повідомити про те, що дійсних рішень немає.
Рішення. З алгебри відомо, що:
Квадратне уравненіеax 2 + bx + c = 0, вираженіеD = b 2 - 4 ac - дискримінант:
- есліD> 0, має два рішення:. ;
- есліD = 0, має єдине рішення:;
- есліD <0, не имеет действительных решений.
Отже, нам необхідно обчислити дискримінант (заведемо для нього речову змінну d типу real) і в залежності від його значення організувати розгалуження. Спочатку потрібно перевірити, чи має рівняння дійсні рішення (для рішень заведемо змінні x 1 і x 2 типу real). Якщо так, і якщо дискримінант не дорівнює нулю, то обчислюємо обидва рішення за формулами, а якщо дискримінант дорівнює нулю, то обчислюємо єдине рішення. Якщо ж дійсних рішень немає, виводимо текстове повідомлення про це. Основний алгоритм можна проілюструвати наступною блок-схемою:

Три нерозшифрованих блоку є стандартні оператори виведення. Розберемо їх докладніше.
1) При виведенні двох коренів вираз буде виглядати наступним чином:
x1: = (-b + sqrt (d)) / 2 * a;
x2: = (-b - sqrt (d)) / 2 * a;
writeln ( 'x1 =', x1: 4: 2, ', x2 =', x2: 4: 2);
При цьому виводиться вираз буде виглядати так: 'x 1 = m. x 2 = n '. де синім кольором виділені однозначні текстові константи, які беруться зі списку аргументів writeln. червоним - обчислені значення x 1 і x 2. Причому коріння виведені в форматованому вигляді: число після першого двокрапки задає ширину поля виведення для змінної разом з точкою (при нестачі поля вона буде розширено програмою), а число після другого двокрапки - кількість виведених дробових знаків (його при роботі програми змінити не можна);
2) При виведенні одного кореня - все те ж саме, тільки виводиться один корінь:
3) При відсутності дійсних коренів виводимо повідомлення:
writeln ( 'No real solutions!');
В результаті внутрішній умовний оператор з тілом включно буде виглядати так:
if d <> 0 then begin
x1: = (-b + sqrt (d)) / 2 * a;
x2: = (-b - sqrt (d)) / 2 * a;
writeln ( 'x1 =', x1: 4: 2, ', x2 =', x2: 4: 2)