#include using namespace std; bool func(int *arr, int length) { for(int i = 0; i < length - 1; ++i) // Проходимся по элементам массива, будем их сверять парами, поэтому итерация цикла на 1 меньше длинны массива { if(arr[i] == 0 || arr[i+1] == 0) // Сравниваем первый элемент пары и второй, если хотябы один из них ноль, то функция возвращает false return false; // Возвращаем false, поскольку ноль не является ни положительный, ни отрицательным числом if((arr[i] > 0 && arr[i+1] > 0) || (arr[i] < 0 && arr[i+1] < 0)) //Сравнимаем один ли знак у первого и второго элемента пары, return false; //Если да, значит знаки не чередуются и функция возвращает false } return true; //Во всех остальных случаях функция возвращает true, значит знаки чередуются } bool func(double *arr, int length) //Принцип работы такой же, как и у функции выше, только работает с массивом вещественных чисел { for(int i = 0; i < length - 1; ++i) { if(arr[i] == 0 || arr[i+1] == 0) return false; if((arr[i] > 0 && arr[i+1] > 0) || (arr[i] < 0 && arr[i+1] < 0)) return false; } return true; } int main() { int arr[5] {1, -2, 3, -5, 6}; // Cоздаем целосисленный массив из 5 элементов с чередующимися знаками cout << func(arr, 5) << endl; int arr2[5] {-2, -6, -1, 5, -6}; // Cоздаем целосисленный массив из 5 элементов с не чередующимися знаками cout << func(arr2, 5) << endl; double d_arr[5] {2.0, -5.6, 3.0, -40.0, 5.0}; cout << func(d_arr, 5) << endl; // Здесь уже вызывается bool func(double *arr, int length), т.к тип массива double double d_arr2[5] {1.0, -2.0, -3.0, 4.0, 0.5}; cout << func(d_arr2, 5) << endl; return 0; }