В массиве [latex]A(n)[/latex] найти и напечатать номера (индексы) локальных максимумов, то есть таких [latex]a_{i}[/latex], что [latex]a_{i-1}<a_{i}>a_{i+1}[/latex].
Значение | Результат |
8 5 3 8 6 7 2 9 5 | 2 4 6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> using namespace std; int main() { int n; cin >> n; double x[n]; for(int i=0; i<n; i++){ cin >> x[i]; } for(int j=1; j<=(n-2); j++){ if((x[j]>x[j+1])&&(x[j]>x[j-1])){ cout << j << " "; } } return 0; } |
Для решения данной задачи зададим массив. После этого создадим цикл, в котором будем каждую итерацию проверять, удовлетворяет ли новое значение нашему условию и если да, то выводить на печать его номер.
У первого и последнего элементов нет двух соседей. Они не могут быть локальными максимумами по правилам этой задачи.
В программе Вы выходите за пределы массива.
Готово.
— Тест только один и тот неверный.
— Последний шаг Вашего цикла выполняется для j == n — 1. Для такого значения x[j+1] соответствует x[n]. Но такого элемента в массиве нет. Т.е. Ваша программа обращается к элементу, лежащему за пределами массива.
Исправил
Зачтено