Вопрос, который вызвал трудности
Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента. Входные данные Вводится список чисел. Все числа списка находятся на одной строке. Выходные данные Выведите ответ на задачу. Примеры входные данные 1 5 2 4 3 выходные данные 5 4
Ответ экспертов Учись.Ru
Чтобы дать полноценный ответ, был привлечён специалист, который хорошо разбирается в теме.
После обсуждения с другими специалистами сервиса мы пришли к выводу, что правильный ответ на ваш вопрос будет звучать следующим образом:
Const n=10;
var a: array[1..n] of integer;
i: integer;
begin
randomize;
writeln('список:');
for i:=1 to n do
begin
a[i]:=random(-20,20);
write(a[i],' ');
end;
writeln;
for i:=2 to n do
if a[i]>a[i-1] then write(a[i]:4);
end.
список:
-20 -20 -14 -18 20 12 -2 -6 -13 15
-14 20 15
Если ввод с клавиатуры:
var a: array of integer;
i,n: integer;
begin
write('n = '); readln(n);
setlength(a,n+1);
for i:=1 to n do read(a[i]);
for i:=2 to n do
if a[i]>a[i-1] then write(a[i],' ');
end.
Составим алгоритм отбора чисел, удовлетворяющих условию задания.
В "списке" выделяются пары соседних элементов и в каждой паре проверяется, превышает ли значение второго элемента пары значение первого элемента. Если превышает, второй элемент значение второго элемента передается на выход. Для списка из n элементов процесс повторятся n-1 раз.
В условии есть один неприятный момент. Количество элементов в списке нигде не указано. Пока еще, увы, привычный большинству "школьный" паскаль не умеет работать с такими списками, а вот PascalABC.NET 3.3 может, поэтому используем его.
// PascalABC.NET 3.3, сборка 1627 от 27.01.2018
// Внимание! Если программа не работает, обновите версию!
begin
ReadlnString.ToIntegers.Pairwise.Where(t->t[1]>t[0]).Select(t->t[1]).Println
end.
Результат
1 5 2 4 3
5 4