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

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

Задать свой вопрос
2 ответа
Составим алгоритм отбора чисел, удовлетворяющих условию задания.
В "списке" выделяются пары примыкающих частей и в каждой паре проверяется, превышает ли значение второго элемента пары значение первого элемента. Если превышает, второй элемент значение второго элемента передается на выход. Для списка из n частей процесс повторятся n-1 раз.

В условии есть один неприятный момент. Количество элементов в перечне нигде не обозначено. Пока еще, увы, привычный большинству "школьный" паскаль не умеет работать с такими перечнями, а вот PascalABC.NET 3.3 может, поэтому используем его.

// PascalABC.NET 3.3, сборка 1627 от 27.01.2018
// Внимание! Если программка не работает, обновите версию!

begin
  ReadlnString.ToIntegers.Pairwise.Where(t-gt;t[1]gt;t[0]).Select(t-gt;t[1]).Println
end.

Итог
1 5 2 4 3
5 4
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]gt;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]gt;a[i-1] then write(a[i],' ');
end.

Nadezhda Gorlenkova
Все великолепно, но в образце входных данных НЕТ операции ввода n !
Милана Ляпинова
Основная "фишка" задачки не в сравнении соседних частей, а в разборе входной строчки.
Даниил Тицкий
Можно и по иному записать 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],' ');
Дарья
Либо так можно записать. var b:=ReadString.ToIntegers; for var i:=1 to b.Length-1 do if b[i]>b[i-1] then write(b[i],' '); Упражняться можно длинно.
Егор Матвейченко
Если Вы "ушли" на способности PascalABC.NET 3.3 (ToIntegers), какой смысл остальное делать в турбопаскалевском стиле?
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт