Нужно помочь разобраться, что не так в коде

Имеется вот такое задание: Напишите программу, которая вводит с клавиатуры непустой массив целых чисел, и печатает число локальных максимумов (элемент является локальным максимумом, если он не имеет соседей, больших, чем он сам).

#include <iostream>
using namespace std;

int main() {
  cout << "Vedite pazmepHoct macuva: ";
  int n = 0;
  cin >> n;
  int arr[n];
  for (int i = 0; i < n; i++) {
    cout << "arr[" << i << "] = ";
    cin >> arr[i];
  }
  for (int i = 0; i < n; i++) {
    if (i == 0) {
      if (arr[i] > arr[i + 1]) {
        cout << arr[i] << '\n';
      }
    } else if (i == n - 1) {
      if (arr[i] > arr[i - 1]) {
        cout << arr[i] << '\n';
      }
    } else {
      if (arr[i] > arr[i + 1] && arr[i] > arr[i - 1])
        cout << arr[i] << " ";
    }
  }
  cin.get();
  cin.get();
}

Ответы (1 шт):

Автор решения: Mikhailo

Вам надо печатает число локальных максимумов, так что надо просто посчитать это число и вывести, а не выводить сами числа.

#include <iostream>
using namespace std;
int main() {
    cout << "Vedite pazmepHoct macuva: ";
    int n = 0;
    cin >> n;
    int* arr = new int[n];

    for (int i = 0; i < n; i++) {
        cout << "arr[" << i << "] = ";
        cin >> arr[i];
        }

    int max_count = 0;

    if (arr[0] >= arr[1]) max_count++;

    if (arr[n - 1] >= arr[n - 2]) max_count++;

    for (int i = 1; i < n - 1; i++)
        if (arr[i] >= arr[i + 1] && arr[i] >= arr[i - 1]) max_count++;

    cout << max_count;
    }
→ Ссылка