Тема: Реверс елементів одновимірного масиву
Не можу зрозуміти чому не шукаються правильно індекси мінусових значень, а також з реверсом повна лажа
/*2. Написати програму, яка виконує реверс елементів одновимірного масиву, розміщених між крайніми від’ємними числами у масиві.
Для розв’язку задачі визначити та використати функції :
-заповнення масиву*/
const int SIZE = 10;
int arr[SIZE]{};
void fillArray(int arr[], int size)
{
srand(time(0));
for (int i = 0; i < SIZE; i++)
{
arr[i] = -20 + rand() % 41;
}
}
//- вивід масиву
void printArray(const int arr[], int size)
{
for (int i = 0; i < SIZE; i++)
{
cout << setw(10) << arr[i];
}
}
//- пошук лівого від’ємного(повертати індекс, якщо знайдено, інакше повертати - 1
int indFirst(const int arr[], int size)
{
for (int i = 0; i < SIZE; i++)
{
if (arr[i] < 0)
{
return i;
}
return -1;
}
}
// - пошук правого від’ємного у масиві
int indLast(const int arr[], int size)
{
for (int i = SIZE; i >= 0; i--)
{
if (arr[i] < 0)
{
return i;
}
return -1;
}
}
// - обертання частини масиву(left, right - індекси лівого та правого елементів частини масиву
int reversePartArray(int arr[], int left, int right)
{
for (int i = indFirst(arr, SIZE), j = indLast(arr, SIZE); i < indLast(arr, SIZE), j >= indFirst(arr, SIZE); i++, j--)
{
return arr[i];
}
}
int main()
{
fillArray(arr, SIZE);
printArray(arr, SIZE);
cout << endl;
int left = indFirst(arr, SIZE);
cout << "Index left: " << left << endl;
cout << endl;
int right = indLast(arr, SIZE);
cout << "Index right: " << right << endl;
cout << endl;
cout << "Reverse array: " << reversePartArray(arr, left, right) << endl;
printArray(arr, SIZE); // маємо побачити, що частина масиву реверснулася
}