@Muhaaaaaaa

Как найти в массиве четыре смежных числа с чередующимися знаками «+» "-" или «- » "+"?

#include <iostream>

using namespace std;

int main()
{
	const int n = 10;
	int m[n];
	// Ввод массива
	cout << "input: " << endl;
	for (int i = 0; i < n; i++) cin >> m[i];
	// Поиск смежных чисел с чередованием знаков
	for (int i = 0; i < n - 4; i++) {
		if (m[i] > 0) {
			if ((m[i + 1] < 0) && (m[i + 2] > 0) && (m[i + 3] < 0))
				cout << m[i] << " " << m[i + 1] << " " << m[i + 2] << " " << m[i + 3] << " ";
		}
		else {
			if ((m[i + 1] > 0) && (m[i + 2] < 0) && (m[i + 3] > 0))
				cout << m[i] << " " << m[i + 1] << " " << m[i + 2] << " " << m[i + 3] << " ";
		}
	}
  return 0;
}


Ввод данных: -1 2 -3 4 -6 -6 7 -8 9 1
Вывод: -1 2 -3 4 2 -3 4 -6 -6 7 -8 9

Есть проблема с выводом чисел. Как исправить?
По идее должен выводить -1 2 -3 4 и -6 7 -8 9
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
@WAR_VIK
Можно вот так:
#include <iostream>

int main() {
int arr[]{-1, 2, -3, 4, -6, -6, 7, -8, 9, 1};
for(int i{0}; i < std::size(arr); ++i) {
     if(arr[i] > 0 && arr[i+1] < 0) {
          std::cout << arr[i] << ' ' << arr[i+1] << ' ';
          ++i;
    }
    if(arr[i] < 0 && arr[i+1] > 0) {
           std::cout << arr[i] << ' ' << arr[i+1] << ' ';
           ++i;
     }
}
return 0;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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