Решение 50 типовых задач по программированию на языке Pascal Дата размещения сборника в сети
Download 1.52 Mb. Pdf ko'rish
|
Задачи на Pascal
- Bu sahifa navigatsiya:
- Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal» 15
№ строки
Десятичная система Двоичная система n a b c d n a b c d 7 102 — — — — 0110 0110 — — — — 8 102 0 — — — 0110 0110 0000 — — — 9 51 0 — — — 0011 0011 0000 — — — 10 51 0 1 — — 0011 0011 0000 0001 — — 11 25 0 1 — — 0001 1001 0000 0001 — — 12 25 0 1 1 — 0001 1001 0000 0001 0001 — 13 12 0 1 1 — 0000 1100 0000 0001 0001 — 14 12 0 1 1 0 0000 1100 0000 0001 0001 0000 15 6 0 1 1 0 0000 0110 0000 0001 0001 0000 16 6 6 1 1 0 0000 0110 0110 0001 0001 0000 Задача № 12. Решить квадратное уравнение Формулировка. Даны вещественные числа a, b и c, причем a отлично от 0. Решить квадратное уравнение ax 2 + bx + c = 0 или сообщить о том, что действительных решений нет. Решение. Из алгебры известно, что: Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal» 15 Квадратное уравнение ax 2 + bx + c = 0, выражение D = b 2 – 4ac – дискриминант: – если D > 0, имеет два решения: 1 2 b D x a − + = , 2 2 b D x a − − = ; – если D = 0, имеет единственное решение: 1 2 b x a = − ; – если D < 0, не имеет действительных решений. Следовательно, нам необходимо вычислить дискриминант (заведем для него вещественную переменную d типа real) и в зависимости от его значения организовать ветвления. Сначала нужно проверить, имеет ли уравнение действительные решения (для решений заведем переменные x1 и x2 типа real). Если да, и если дискриминант не равен нулю, то вычисляем оба решения по формулам, а если дискриминант равен нулю, то вычисляем единственное решение. Если же действительных решений нет, выводим текстовое сообщение об этом. Основной алгоритм можно проиллюстриро- вать следующей блок-схемой: Три нерасшифрованных блока представляют собой стандартные операторы вывода. Разберем их подробнее: 1) При выводе двух корней выражение будет выглядеть следующим образом: x1 := (-b + sqrt(d)) / 2 * a; x2 := (-b - sqrt(d)) / 2 * a; writeln('x1 = ', x1:4:2, ', x2 = ', x2:4:2); При этом выводимое выражение будет выглядеть так: 'x1 = m, x2 = n', где синим цветом выделены однозначные текстовые константы, которые берутся из списка аргумен- тов writeln, красным – вычисленные значения x1 и x2. Причем корни выведены в форма- тированном виде: число после первого двоеточия задает ширину поля вывода для перемен- ной вместе с точкой (при нехватке поля она будет расширено программой), а число после второго двоеточия – количество выводимых дробных знаков (его при работе программы изменить нельзя); 2) При выводе одного корня – все то же самое, только выводится один корень: x1 := -(b / 2 * a); writeln('x = ', x1:4: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) end else begin x1 := -(b / 2 * a); Download 1.52 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling