@AlexB_49
Студент

Сколько элементов массива больше своих соседей (предыдущего и следующего элементов)?

Я написал программу, которая выводит сколько элементов массива больше своих соседей.

#include <iostream>
using namespace std;

int main()
{
	double ARR[25];
	int count = 0;
	
	cout << "Enter the elements of the array:" << endl;

	for (int i = 0; i < 25; i++)
	{
		cout << i + 1 << ") ";
		cin >> ARR[i];
	}

	cout << "\nArray: { ";
	for (int i = 0; i < 25; i++)
	{
		cout << ARR[i] << " ";
	}
	cout << "}";

	for (int i = 0; i < 25; i++)
	{
		if (ARR[i] > ARR[i + 1] && ARR[i] > ARR[i - 1])
			count++;
	}
	cout << "\n\nResult: " << count;

	cin.clear();
	cin.ignore(numeric_limits<streamsize>::max(), '\n');
	cin.get();

	return 0;
}

Всё работает нормально, но есть небольшой нюанс: первый и последний элементы имеют только один соседний элемент.
Как сделать так, чтобы первый и последний элементы не учитывались?
  • Вопрос задан
  • 1053 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Чтобы пропустить первый и последние элементы просто измените границы цикла:
for (int i = 1; i < 24; i++)

Если вы хотите эти элементы считать, если они больше единственного их соседа, то воспользуйтесь ленивым вычислением логических формул (при вычислении A || B, если A == true, то B вообще вычисляться не будет):
for (int i = 0; i < 25; i++)
  {
    if ((i +1 == n || ARR[i] > ARR[i + 1]) && 
         (i == 0 || ARR[i] > ARR[i - 1]))
      count++;
  }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы