Для обращения к массиву вам нужно либо использовать стандартную функцию std::swap
, либо написать такую функцию самостоятельно.
Эта функция
void reverseorder(int number[], int SIZE)
{
for (int i = 0; i < SIZE; i++)
{
number[i] = number[SIZE - i];
return;
}
}
не меняет местами элементы массив. Так, например, в первой итерации из-за этого оператора
number[i] = number[SIZE - i];
значение элемента number[0]
будет просто потеряно. И более того, здесь используется несуществующий элемент массива [SIZE - i], когда i равен 0.
Вам необходимо поменять местами две половины массива.
Также вызов std :: setw в этом утверждении
std::cout << number[i] << std::setw(5);
не имеет смысла. Этот вызов должен быть помещен перед выводимым выражением number[i]
.
Обратите внимание, что обе функции должны иметь второй параметр типа size_t, а первый параметр функции, которая выводит массив, должен иметь квалификатор const
потому что внутри функции используемый массив не изменяется.
Вот и вы.
#include <iostream>
#include <utility>
void reverseorder( int a[], size_t n )
{
for ( size_t i = 0; i < n / 2; i++ )
{
std::swap( a[i], a[n-i-1] );
}
}
std::ostream & printout( const int a[], size_t n, std::ostream &os = std::cout )
{
for ( size_t i = 0; i < n; i++ )
{
os << a[i] << ' ';
}
return os;
}
int main()
{
int number[] = {10, 15, 20, 25, 30, 35, 40, 45, 50, 55};
const size_t N = sizeof( number ) / sizeof( *number );
printout( number, N ) << '\n';
reverseorder( number, N );
printout( number, N ) << '\n';
return 0;
}
Вывод программы:
10 15 20 25 30 35 40 45 50 55
55 50 45 40 35 30 25 20 15 10
Если вы не можете использовать std :: swap затем в l oop напишите например
for ( size_t i = 0; i < n / 2; i++ )
{
int tmp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = tmp;
}