Не показывает результаты функции в C++

include <iostream>
using namespace std;
double fill_array(double arr[], int size);
void show_array(const double arr2[], int size2);
double reverse_array(double arr3[], int size3);

int main()
{
    double arrm[10];
    arrm[10] = fill_array(arrm, 10);
    show_array(arrm, 10);
    reverse_array(arrm, 10);
    return 0;
}
double fill_array(double arr[], int size)
{
    for(int i = 0; i < size; i++)
    {
        cout << "Enter: ";
        cin >> arr[i];
    }
    return arr[10];
}
void show_array(const double arr2[], int size2)
{
    for (int i = 0; i < size2; i++)
    {
        cout << arr2[i] << endl;
    }
}
double reverse_array(double arr3[], int size3)
{
    int temp;
    for(int i = 0, j = 9; i < size3, j < size3 ; i++, j--)
    {
        temp = arr3[i];
        arr3[i] = arr3[j];
        arr3[j] = temp;
    }
    cout << arr3[10] << endl;
    return arr3[10];
}

Здравствуйте, я написал этот код чтобы она все делал через функции, в функции fillarray она заполняет массив потом этот массив переходит в функции showarray для показа массива, потом этот массив опять передается другому функцию reversearr для того что бы это функция переместила значения в массиве то есть обратная расстановка значений в массиве, и вот проблема в этой функции reversearr и она не показывает результаты, буду очень рад вашей помощи, если будут тупые ошибки то извините я новичок


Ответы (1 шт):

Автор решения: mazik7512

Исходя из вашего кода массив состоит из 10 элементов, в конце функции reverse_array вы сначала выводите, а затем возвращаете 11 по счёту (то есть вы смотрите за границы массива) элемент массива, т.к. в C++, да и в большинстве современных языков первый индекс массива равен 0.

Также у вас неправильно стоит условие в цикле, во первых, он должен быть 2 раза меньше длины, иначе вы поменяете все обратно, и j там совершенно ни к чему.

Если вам нужно выводить в данной функции только последний элемент, то правильно будет вот так.

double reverse_array(double arr3[], int size3)
{
    double temp;
    for(int i = 0, j = 9; i < size3 / 2; i++, j--)
    {
        temp = arr3[i];
        arr3[i] = arr3[j];
        arr3[j] = temp;
    }
    cout << arr3[size3 - 1] << endl; //либо просто 9
    return arr3[size3 - 1];
}

P.S. У вас в вопросе неправильно стоит тэг css, он не имеет никакого отношения к данному вопросу. Это каскадные таблицы стилей, предназначенные для стилизации элементов интерфейса.

→ Ссылка