Переворачивание массива

Давайте потренируемся и напишем функцию reverse(), позволяющую перевернуть массив, состоящий из целых чисел (листинг 6.8).

Листинг 6.8. Переворачивание массива

#include <iostream>

void reverse(int *pArr, int length);
void print_array(int *pArr, int length);

int main() {
   const int ARR_SIZE = 5;
   int arr[ARR_SIZE] = {1, 2, 3, 4, 5};
   print_array(arr, ARR_SIZE); // 1 2 3 4 5
   reverse(arr, ARR_SIZE);
   print_array(arr, ARR_SIZE); // 5 4 3 2 1
   reverse(arr, ARR_SIZE);
   print_array(arr, ARR_SIZE); // 1 2 3 4 5
   return 0;
}
void reverse(int *pArr, int length) {
   if (!pArr || length < 1) return;
   int tmp = 0;
   for (int i = 0, j = length - 1; i < j; ++i, --j) {
      tmp = pArr[i];
      pArr[i] = pArr[j];
      pArr[j] = tmp;
   }
}
void print_array(int *pArr, int length) {
   if (!pArr || length < 1) return;
   for (int i = 0; i < length; ++i) {
      std::cout << pArr[i] << ' ';
   }
   std::cout << std::endl;
}

Вначале переменной i присваиваем индекс первого элемента, а переменной j — индекс последнего элемента. На каждой итерации цикла будем увеличивать значение переменной i и уменьшать значение переменной j. Цикл будет выполняться, пока i меньше j. На каждой итерации цикла мы просто меняем местами значения двух элементов массива, предварительно сохраняя значение в промежуточной переменной tmp.

Для изменения порядка следования элементов массива на противоположный можно воспользоваться стандартной функцией reverse() (см. разд. 19.4):

// #include <algorithm>
const int ARR_SIZE = 3;
int arr[ARR_SIZE] = {1, 2, 3};
std::reverse(arr, arr + ARR_SIZE);
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 3 2 1

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов