Решение 50 типовых задач по программированию на языке Pascal Дата размещения сборника в сети


Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal»


Download 1.52 Mb.
Pdf ko'rish
bet63/77
Sana03.02.2023
Hajmi1.52 Mb.
#1152062
TuriРешение
1   ...   59   60   61   62   63   64   65   66   ...   77
Bog'liq
Задачи на Pascal

Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal» 
57 
4.
L, M, R: integer; 
5.
6.
begin 
7.
read(L, M, R); 
8.
while R <> 0 do begin 
9.
if (L - M) * (R - M) <= 0 then break; 
10.
L := M; 
11.
M := R; 
12.
read(R) 
13.
end; 
14.
if R = 0 then R := L; 
15.
writeln((L - M) * (R - M) > 0) 
16.
end. 
К слову, данная задача может быть обобщена и на случай, когда длина вводимой последова-
тельности не имеет ограничений снизу, то есть, последовательность может также быть пустой или 
содержать один член (для двух членов она будет работать корректно – это легко проверить). Для 
этого можно выполнить контроль ввода в зависимости от значений первых двух вводимых элемен-
тов и провести инициализацию значений для вывода необходимого для вырожденных случаев от-
вета. 
Задача № 45. Проверить, является ли последовательность строго монотонной 
Формулировка. Дана последовательность натуральных чисел, ограниченная вводом нуля. 
Проверить, является ли эта последовательность строго монотонной. 
Решение. Эта задача – упрощенный вариант задачи 32. Вообще, эти две задачи логично было 
бы в данном сборнике поменять местами, однако она оказалась на этой позиции из-за тематического 
распределения задач. 
Единственное отличие от 
задачи 32 состоит в том, что в нашем случае члены последователь-
ности вводятся с клавиатуры с помощью оператора read() – их не нужно добывать как цифры неко-
торого числа. 
Воспользуемся формулой (II) из 
задачи 32
p = delta
1
 * delta
i
 
Напомним, что если произведение p отрицательно или равно нулю, то последовательность не 
строго монотонна, так как нашлись два delta разных знаков. Мы будем двигаться по последователь-
ности в порядке ввода, слева направо, исследуя при этом знаки всех произведений p. Так как delta
1
присутствует в формуле в качестве константы, его значение необходимо вычислить заранее: 
read(a, b); 
delta := a – b; 
В цикле мы будем на каждом шаге считывать один очередной член, поэтому необходимо 
«сдвигать последовательность» и считывать его в освободившуюся переменную. Так как в перемен-
ной a хранится левый член каждой пары, а в переменной b – правый член, то очередное число мы 
будем считывать в переменную b. Так как ограничитель последовательности – ноль, то и цикл будет 
продолжаться до ввода в b нуля: 
while b <> 0 do begin 
if delta * (a - b) <= 0 then break; 
a := b; 
read(b) 
end; 



Download 1.52 Mb.

Do'stlaringiz bilan baham:
1   ...   59   60   61   62   63   64   65   66   ...   77




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling