Определить вид последовательности — возрастающая, убывающая, случайная или постоянная - 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, то выводится сообщение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д