Вывести закономерность возрастания или убывания по первым двум числам - Turbo Pascal
Формулировка задачи:
Не правильно считает программа : задаю случайный массив одномерный от 1 до 20 , с числами пример от -50 до 100 , нужно вывести закономерность возрастания или убывания по первым двум числам , и после продолжить убирая лишние элементы массива. Но получается так на пример массив :-1 0 2 3 -5 ............7; получается -1 0 2 3 7 возрастание правильно или пример 6 5 8 -4 6 -1..... ; получается 6 5 -4 -1 ... правильно. А может и так 3 6 8 4 6 2 .... определяет убывание 3 2 вместо возрастание , не стабильно работает в чём ошибка , понять не могу ?
Решение задачи: «Вывести закономерность возрастания или убывания по первым двум числам»
textual
Листинг программы
const n=20;
var
a:array[1..n] of integer;
i,j:integer;
b:boolean;
begin
randomize;
for i:=1 to n do begin
a[i]:=random(101)-50;
write(a[i],' ');
end;
writeln;
j:=1; //индекс отобранного элемента
b:=a[1]<a[2]; //если true, то последовательность возрастающая
if b then write('increasing:') else write('decreasing:'); //собственно вывод типа этой последовательности
write(a[j]); //вывод первого элемента
for i:=2 to n do if (a[i]>a[j]=b) then begin write(' ',a[i]);j:=i;end;
//цикл для вывода остальных элементов,
//удовлетворяющих требованию для первых двух,
//т.е. последний элемент, удовлетворяющий
//требованиям a[j] при сравнении с текущим
//должен принимать значение равное переменной
// b (a[1]<a[2])
end.
Объяснение кода листинга программы
- Переменная n инициализируется значением 20.
- Создается массив a, который может вместить до 20 целых чисел.
- Создаются две переменные i и j, которые будут использоваться для цикла.
- Вызывается функция randomize, чтобы инициализировать генератор случайных чисел.
- Запускается цикл for, который выполняется 20 раз. В каждой итерации этого цикла присваивается случайное число от 1 до 100 (включительно) переменной a[i], и это число выводится на экран с пробелом.
- После завершения цикла выводится символ новой строки.
- Переменная b инициализируется значением true. Она будет использоваться для определения типа последовательности (возрастающей или убывающей).
- Если значение переменной b равно true, то выводится сообщение
increasing:, что означает, что последовательность является возрастающей. - Если значение переменной b равно false, то выводится сообщение
decreasing:, что означает, что последовательность является убывающей. - Выводится первый элемент массива a[j].
- Запускается цикл for, который начинается со второго элемента массива (i=2) и продолжается до последнего элемента (n-1).
- Внутри цикла проверяется условие a[i]>a[j] и если оно выполняется, то выводится элемент a[i] и переменная j обновляется, чтобы отразить текущее значение j.
- Цикл завершается, когда выполнено условие a[i]>a[j] для всех элементов от i=2 до n-1.
- Выводится последнее значение переменной j, которое должно быть равно b (a[1]<a[2]).
- Конец программы.