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

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

Элементы больше, чем предыдущий и следующий элемент в массиве

Дан массив из N целых чисел. Задача состоит в том, чтобы напечатать элементы из массива, которые больше, чем их непосредственный предыдущий и следующий элементы.

Примеры :

Подход : поскольку слева от первого элемента нет элемента (arr [0]), а справа от последнего элемента (arr [N-1]) нет элемента, поэтому эти два элемента будут исключены из окончательного ответа ,

Теперь просмотрите массив, начиная с индекса 1 до N-2, и для каждого элемента arr [i] проверьте, не являются ли arr [i]> arr [i-1] и arr [i]> arr [i + 1] .

Ниже приведена реализация вышеуказанного подхода:

// C ++ программа для печати элементов больше чем
// предыдущий и следующий элемент в массиве
#include <bits/stdc++.h>

using namespace std;

// Функция для печати элементов больше чем
// предыдущий и следующий элемент в массиве

Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента. PYTHON 3 .ЧТО У МЕНЯ В КОДЕ НЕВЕРНО,ИСПРАВЬТЕ : a=input().split()
for i in range(len(a)):
if a[i]>a[i-1] and i!=0:
print(a[i])

nelle987

В коде есть две проблемы:
1) input().split() возвращает список строк. Строки сравниваются лексикографически, и не всегда совпадают с тем, как соотносятся числа: например, «8» > «10», несмотря на то, что 8 < 10. Это лечится преобразованием к целому типу.
2) Это не приведет в ошибке, но не очень аккуратно: условие a[i] > a[i — 1] and i != 0 при i = 0 сравнит a[0] и a[-1], то есть первый и последний элемент, и только потом узнает, что i = 0. Сравнение этих элементов массива бессмысленно, код не ломается на этом месте только из-за особенности языка, в котором определены отрицательные индексы. Если переставить условия местами, то сначала код проверит, что i != 0, и если это не так, он ничего сравнивать не будет. Другой способ поправить — поменять границы в range, так будет немного быстрее.

Итоговый вариант:
a=input().split()
for i in range(1, len(a)):
if int(a[i])>int(a[i-1]):
print(a[i])

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

Пытаюсь освоить с++, вот не могу понять где я ошибся в этой задаче:

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

В первой строке вводится количество элементов в массиве. Во второй строке вводятся элементы массива.
Формат выходных данных
Выведите ответ на задачу.

5
1 5 2 4 3
Sample Output:

#include
using namespace std;
#include
int main() <
int n;
cin >> n;
vector a(n);
//считывание
for (int i = 0; i < n; i++) <
cin >> a[i];
>
for (int i = 0; i < n — 1; i++) <
if (a[i + 1] < a[i]) <
cout << a[i] << » «;
>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *