Вложенные циклы. Возрастающая или убывающая последовательность - Pascal
Формулировка задачи:
Вводится последовательность из N целых чисел (N задается с клавиатуры). Проверить, упорядочена ли последовательность. По возрастанию или убыванию? Массивы использовать запрещено.
Решение задачи: «Вложенные циклы. Возрастающая или убывающая последовательность»
textual
Листинг программы
var n, i, p, q, s, t: Integer; z: Boolean;
begin
Write('n: '); Read(n,q);
i:=2; {s:=0; z:=False;}
while i<=n do begin
p:=q; Read(q);
if p<q then t:=-1 else if p>q then t:=1 else t:=0;
z:=z or (t=0);
if s=0 then s:=t
else if (s<>t) and (t<>0) then Break;
Inc(i);
end;
Write('Последовательность ');
if i<=n then WriteLn('не упорядочена')
else if s=0 then WriteLn('постоянна')
else begin
Write('упорядочена по ');
if s<0
then if z then WriteLn('неубыванию') else WriteLn('возрастанию')
else if z then WriteLn('невозрастанию') else WriteLn('убыванию');
end;
end.
Объяснение кода листинга программы
- Объявление переменных:
n, i, p, q, s, t: Integer;- объявление целочисленных переменных n, i, p, q, s, tz: Boolean;- объявление переменной z логического типа
- Ввод значения переменной n:
Write('n: '); Read(n,q);- вывод на экран сообщенияn:и ввод значения переменной n
- Инициализация переменной i:
i:=2;- инициализация переменной i значением 2
- Цикл while:
while i<=n do begin- начало цикла, выполняющегося, пока i меньше или равно np:=q; Read(q);- присвоение переменной p значения переменной q, а затем ввод нового значения переменной qif p<q then t:=-1 else if p>q then t:=1 else t:=0;- проверка условия, после чего переменной t присваивается значение -1, 1 или 0 в зависимости от результата сравнения переменных p и qz:=z or (t=0);- логическая операцияИЛИмежду z и (t=0), результат сохраняется в переменной zif s=0 then s:=t else if (s<>t) and (t<>0) then Break;- если s равно 0, то s присваивается значение t, иначе если s не равно t и t не равно 0, то происходит выход из циклаInc(i);- увеличение значения переменной i на 1end;- конец блока цикла while
- Вывод результата:
Write('Последовательность ');- вывод на экран текстаПоследовательностьif i<=n then WriteLn('не упорядочена')- если i меньше или равно n, то выводится сообщениене упорядоченаelse if s=0 then WriteLn('постоянна')- иначе если s равно 0, то выводится сообщениепостояннаelse begin- начало блока elseWrite('упорядочена по ');- вывод на экран текстаупорядочена поif s<0 then if z then WriteLn('неубыванию') else WriteLn('возрастанию')- если s меньше 0, то если z истинно, то выводится сообщениенеубыванию, иначе -возрастаниюelse if z then WriteLn('невозрастанию') else WriteLn('убыванию');- иначе если z истинно, то выводится сообщениеневозрастанию, иначе -убыванию
end.- конец программы.