1

Тема: Реверс елементів одновимірного масиву

Не можу зрозуміти чому не шукаються правильно індекси мінусових значень, а також з реверсом повна лажа

/*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); // маємо   побачити, що  частина масиву реверснулася
}

2 Востаннє редагувалося koala (12.04.2022 12:48:01)

Re: Реверс елементів одновимірного масиву

Уважніше дивіться, де у вас size, а де SIZE.
Якщо в масиві десять елементів, то останній матиме індекс 9 - це в indLast.
В reversePartArray ви маєте обмінювати елементи, а не повертати один з них. В подумайте, нащо вам left і right.

Подякували: Gap4ik, leofun012

3

Re: Реверс елементів одновимірного масиву

Дякую, дуже допомогли. Зробив висновок те що не уважний)
Також там де праве і ліве знайти, return-1 виніс за for, проексперементував і все вийшло)