Разворот массива в обратную сторону

Разворот массива в обратную сторону


Задача такова. Дается массив из n чисел. Требуется перевернуть его и вывести все числа в обратном порядке.


int n;
int arr[100];

cin >> n;

for (int i = 0; i < n; i++)
  cin >> a[i];

for (int i  = 0; i < n / 2; i++)
swap(a[i], a[n - i - 1]);

for (int i = 0; i < n; i++)
  cout << a[i] << ' ';



Прежде чем разбирать код, нужно разобраться с функцией swap(a, b); Функцияswap(a, b) меняет между собой значения переменных a и b. Например изначально a и b были равны 5 и 10 соответственно. Тогда после swap(a, b) a будет равно 10, а b равно 5.

Еще стоит отметить, что n / 2 - это целочисленное деление. При целочисленном делении дробная часть отбрасывается. То есть 5 / 2 = 2.

Итак, во втором цикле мы начинаем менять элементы в массиве. Сначала меняем 0 c n - 1, потом 1 с n - 2 и т.д. Так мы делаем n / 2 раз. Если сделать такую операцию не n / 2, а n раз, тогда массив просто перевернется еще раз и придет в исходное положение.

Пример.
n = 6.

Массив: 4 3 9 8 1 0

Шаг 1 - 0 3 9 8 1 4
Шаг 2 - 0 1 9 8 3 4
Шаг 3 - 0 1 8 9 3 4

Итак, получили перевернутый массив.
Понравилась новость? Добавь в закладки!
Хочешь получать свежие новости? Подпишись на обновления с сайта!
Рекомендуем посмотреть:
#1 | написал: nsmotion | 1 октября 2013 21:22 | ICQ: |

Группа: Гости
Публикаций: 0
Комментариев: 0
как то программа не выполняется можете проверить правильность ввода
#include <iostream.h>
#include <iomanip.h>
#include <math.h>

{
{

int n;
int arr[100];

cin >> n;

for (int i = 0; i < n; i++)
cin >> a[i];

for (int i = 0; i < n / 2; i++)
swap(a[i], a[n - i - 1]);

for (int i = 0; i < n; i++)
cout << a[i] << ' ';
}

{
cout << "Vvedite a[" << i << "]= " ;
cin >> a[i];
}
cout << "\nMassiv a:\n"; // ????? ??????????? ???-????
for (i=0; i<n; i++)
cout << setw(7) << a[i];
cout << endl;

return 0;
}




Пишет одна ошибка ну не пойму где

#2 | написал: Mr.Cheater | 2 октября 2013 21:37 | ICQ: 360239964 | Пользователь offline

Группа: Администраторы
Публикаций: 33
Комментариев: 68
Цитата: nsmotion
как то программа не выполняется можете проверить правильность ввода



Пишет одна ошибка ну не пойму где


Какая ошибка?

#3 | написал: nsmotion | 3 октября 2013 00:15 | ICQ: |

Группа: Гости
Публикаций: 0
Комментариев: 0
да я сам и не знаю*( вот решил спросить у вас! можете помочь!

Нужно разположить элементы массива в обратном порядке

вот код начинается с этого
#include <iostream.h>

#include <iomanip.h>

#include <math.h>


void swap(int a[],int,int*,int*,int*,int*);


int main ()


{

int a[10],i,n;

cout<<"Vvedite razmer massiva;";

cin>>n;


cout<<"Vvedite massiv:\n";

for (i=0; i<n; i++)


{

cout<<"Vvedite a["<<i<<"]=";

cin>>a[i];

}


cout << "\nMassiv a:\n";

for (i=0; i<n; i++)

cout << setw(7) << a[i];

cout << endl;
.....

и вот дальше код я не могу понять что писать подскажи плиз!!

#4 | написал: rom | 6 октября 2013 01:04 | ICQ: |

Группа: Гости
Публикаций: 0
Комментариев: 0
что то не работает код в вашей статьи у меня
можене написать весь скилет программы пожалуйсто

Добавление комментария

Ваше Имя:
Ваш E-Mail:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Вставка исходного кода Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера

Введите два слова, показанных на изображении: