Определить вид последовательности — возрастающая, убывающая, случайная или постоянная - PascalABC.NET
Формулировка задачи:
Доброго дня всем! Может быть у кого-нибудь найдется время подсказать, как решить эту задачу?
Программа получает на вход последовательность целых чисел по модулю не превосходящих 10^9. Признак окончания последовательности - число 2 Х 10^9. Программа должна определить вид последовательности - возрастающая, убывающая, случайная или постоянная.
Ответ следует выдать в следующем формате - в 1-й строке напечатать количество элементов последовательности (без учета 2 Х 10^9), во 2-й строке - тип последовательсти:
1 ASCENDING (строго возрастающая);
2 WEAKLY ASCENDING (нестрого возрастающая, т.е. неубывающая);
3 DESCENDING (строго убывающая);
4 WEAKLY DESCENDING (нестрого убывающая, т.е. невозрастающая);
5 CONSTANT (постоянная);
6 RANDOM (случайная).
Решение задачи: «Определить вид последовательности — возрастающая, убывающая, случайная или постоянная»
textual
Листинг программы
const
theEndTerminated = 2000000000;
var
Status : Byte := $00;
// 1 бит - последовательность возрастающая
// 2 бит - последовательность убывающая
// 3 бит - в последовательности есть равные числа
var
count, N1, N2 : Integer;
begin
count := 0;
Read(N1);
while N1 <> theEndTerminated do
begin
count += 1;
Read(N2);
if N2 <> theEndTerminated then
begin
if N1 < N2 then Status := Status or $01;
if N1 > N2 then Status := Status or $02;
if N1 = N2 then Status := Status or $04;
end;
N1 := N2;
end;
WriteLn(count);
case Status of
1 : WriteLn('ASCENDING'); // строго возрастающая
2 : WriteLn('DESCENDING'); // строго убывающая
4 : WriteLn('CONSTANT'); // постоянная
5 : WriteLn('WEAKLY ASCENDING'); // неубывающая
6 : WriteLn('WEAKLY DESCENDING'); // невозрастающая
else
WriteLn('RANDOM'); // случайная
end;
end.
Объяснение кода листинга программы
- В коде используется язык программирования PascalABC.Net.
- Задачей кода является определение вида последовательности чисел: возрастающая, убывающая, случайная или постоянная.
- В коде используются следующие переменные:
- Status: булевый тип, используемый для определения вида последовательности (возрастающая, убывающая, равные числа).
- count: счетчик числа элементов последовательности.
- N1, N2: целочисленные переменные, используемые для хранения текущих значений элементов последовательности.
- В начале кода инициализируется значение переменной Status, равное 0, что означает отсутствие признаков возрастающей, убывающей или равной последовательности.
- В цикле, пока не будет достигнут конец последовательности (N1 не будет равно theEndTerminated), происходит следующее:
- count увеличивается на 1.
- считывается следующий элемент последовательности N2.
- если N2 не равно theEndTerminated, то проверяется, является ли текущая последовательность возрастающей, убывающей или равной.
- если N1 меньше N2, то в Status устанавливается 1-й бит (возрастающая последовательность).
- если N1 больше N2, то в Status устанавливается 2-й бит (убывающая последовательность).
- если N1 равно N2, то в Status устанавливается 4-й бит (в последовательности есть равные числа).
- После завершения цикла, значение переменной count выводится на экран.
- Затем, в зависимости от значения переменной Status, выводится сообщение о виде последовательности:
- если Status равно 1, то выводится сообщение
ASCENDING(возрастающая последовательность). - если Status равно 2, то выводится сообщение
DESCENDING(убывающая последовательность). - если Status равно 4, то выводится сообщение
CONSTANT(постоянная последовательность). - если Status равно 5, то выводится сообщение
WEAKLY ASCENDING(неубывающая последовательность). - если Status равно 6, то выводится сообщение
WEAKLY DESCENDING(невозрастающая последовательность). - если Status не равно 1, 2, 4, 5 или 6, то выводится сообщение
RANDOM(случайная последовательность).
- если Status равно 1, то выводится сообщение