Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента....

0 голосов
367 просмотров

Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента. Входные данные Вводится список чисел. Все числа списка находятся на одной строке. Выходные данные Выведите ответ на задачу. Примеры входные данные 1 5 2 4 3 выходные данные 5 4


Информатика (112 баллов) | 367 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

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.

(9.7k баллов)
0

Все прекрасно, но в примере входных данных НЕТ операции ввода n !

0

Основная "фишка" задачи не в сравнении соседних элементов, а в разборе входной строки.

0

Можно и по другому записать readln(s);
var a:=s.ToIntegers;
var n:=a.Length;
for i:=1 to n-1 do
if a[i]>a[i-1] then write(a[i],' ');

0

Или так можно записать. var b:=ReadString.ToIntegers;
for var i:=1 to b.Length-1 do
if b[i]>b[i-1] then write(b[i],' '); Упражняться можно долго.

0

Если Вы "ушли" на возможности PascalABC.NET 3.3 (ToIntegers), какой смысл остальное делать в турбопаскалевском стиле?

0 голосов

Составим алгоритм отбора чисел, удовлетворяющих условию задания.
В "списке" выделяются пары соседних элементов и в каждой паре проверяется, превышает ли значение второго элемента пары значение первого элемента. Если превышает, второй элемент значение второго элемента передается на выход. Для списка из 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

(142k баллов)