Как перевернуть массив в c
Перейти к содержимому

Как перевернуть массив в c

  • автор:

Как перевернуть массив в c

Регистрация: 30.05.2018

Сообщений: 56

Реверс массива с помощью указателей (Си)

Здравствуйте! Подскажите, пожалуйста, что я делаю неправильно при разыменовании указателя *current?
Задача состоит в том, чтобы с помощью передачи в функцию указателя на первый элемент и на следующий элемент после массива перевернуть массив.

void array_reverse_ptr(int* array, int* limit) < for (int* current = array; current < limit; current++)< int storage_prt = *current; *current = *(limit - current - 1); *(limit - current - 1) = storage_prt; >> int main() < int myarray[] = ; int myarray_size = 6; array_reverse_ptr(myarray, myarray + 6); printf("\n"); for (int i = 0; i < myarray_size; i++)< printf("%d ", myarray[i]); >>

Перевернуть одномерный массив

Народ. Помогите пожалуйста с программой. Нужно перевернуть одномерный массив одним из простых способов. Спасибо.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Перевернуть одномерный и двумерный массив
Перевернуть одномерный массив. Перевернуть двумерный массив

Дан одномерный массив из целых чисел. Перевернуть его
Дан одномерный массив из целых чисел. Перевернуть его.

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов)
Помогите решить задачку: Дана матрица 5х7, элементами которой являются значения символьного типа.

Эксперт С++

4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
Просто распечатать в перевернутом виде:

1 2 3 4 5 6 7 8 9 10
int Print(int *a, int *end) { if (a  end) { Print(a + 1, end); printf("%d ", *a); } } Print(a, a + N);

Перевернуть массив:

1 2 3 4 5 6 7 8 9 10 11
void Reverse(int *a, int *b) { if (a  b) { *a += *b; *b = *a - *b; *a -= *b; Reverse(a + 1, b - 1); } } Reverse(a, a + N - 1);

Регистрация: 23.08.2012
Сообщений: 29
напишите полностью программу плз начиная с include

Эксперт С++

342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include int main() { int array[] = { 1, 5, -7, 1, 0, -1, 3, 6, 2, 0, 7 }; int * begin = array; int * end = array + sizeof(array) / sizeof(*array) - 1; while (begin  end) { *begin ^= *end ^= *begin ^= *end; begin++; end--; } for (const int * p = array; p  array + sizeof(array) / sizeof(*array); p++) { std::cout  <*p  <" "; } }

Эксперт С++

4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#include void Reverse(int *a, int *b) { if (a  b) { *a += *b; *b = *a - *b; *a -= *b; Reverse(a + 1, b - 1); } } int main() { int i, a[] = {1,2,3,4,5}, n; n = sizeof(a) / sizeof(*a); for(i = 0; i  n; i++) printf("%d ", a[i]); Reverse(a, a + n - 1); puts("\n"); for(i = 0; i  n; i++) printf("%d ", a[i]); return 0; }

Эксперт С++

342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#include #include  #include  #include  namespace mpl = boost::mpl; struct PrintSeq { template typename T> void operator()(T val) { std::cout   <" "; } }; template typename Seq> struct Reverse { typedef typename mpl::reverse Seq>::type type; }; int main() { typedef mpl::vector  mpl::int_ 1>, mpl::int_ 2>, mpl::int_ 3>, mpl::int_ 4>, mpl::int_ 5> > v_numbers; typedef typename Reverse v_numbers>::type rev_vector; mpl::for_each rev_vector>(PrintSeq()); }

442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 974
По-старинке:

1 2 3 4 5 6 7 8 9 10 11 12
#include #include #include int main() { int arr[] = { 1, 2, 3, 4, 5 }; std::reverse(std::begin(arr), std::end(arr)); std::copy(std::begin(arr), std::end(arr), std::ostream_iteratorint>(std::cout, " ")); }

2021 / 1620 / 489
Регистрация: 31.05.2009
Сообщений: 3,005

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#include int main() { using namespace std; const int n = 5; int a[n]; // вводим элементы массива cout  "input array:\n"; for(int i = 0; i  n; ++i) { cout  i + 1  "\\"  n  ": "; cin >> a[i]; if(!cin) return 1; } // переворачиваем for(int i = 0, j = n - 1; i  j; ++i, --j) { int t = a[i]; a[i] = a[j]; a[j] = t; } // выводим элементы массива на экран cout  "result:\n"; for(int i = 0; i  n; ++i) cout  " "  a[i]; cout  "\n"; }

Регистрация: 31.10.2017
Сообщений: 85

1 2 3 4 5 6 7 8
void expand(int arr[], int size) { int x; for(int i = 0; i  size - i - 1; i++) { x = arr[i]; arr[i] = arr[size - i - 1]; arr[size - i - 1] = x; } }

260 / 165 / 54
Регистрация: 03.05.2019
Сообщений: 339
Можна так, для разнообразия:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#include using namespace std; int main() { const int size = 6; int array[size]; // - можно любой другой размер for (int i = 0; i  size; i++) { cout  <"array["   <"] = "; cin >> array[i]; } int buffer; // - временное хранилище for (int i = 0; i  size / 2; i++) // - половинчастый метод { buffer = array[i]; array[i] = array[size - i - 1]; array[size - i - 1] = buffer; } return 0; }

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Перевернуть массив
Дан массив размерности n. Заполнить массив случайными числами в диапазоне . Перевернуть массив.

Перевернуть массив
Люди! Помогите пожалуйста с программой. Дан массив размерности n. Перевернуть массив: a(n)=a(0).

Перевернуть массив
В завершении это программы нужно «перевернуть массив» — поменять первый элемент с последним, второй.

перевернуть массив
Есть символьный массив, сделать его реверс! #include <iostream> #include <string.h> using.

Как перевернуть массив в си?

scottparker

Нужно пройти массив с начала и с конца одновременно, меняя элементы местами, до тех пор, пока счётчик начала не стане больше либо равен счётчику конца.

Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать
Developer, ex-admin

В цикле до половины массива, в цикле 2 счетчика: счетчик с начала массива увеличивающийся и счетчик с конца уменьшающийся. На каждой итерации меняешь местами элементы массива индексируемые счетчиками.
В случае не четного количества элементов, центральный элемент остается на месте.

Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

c

  • C
  • +1 ещё

Почему мой пин постоянно 1?

  • 1 подписчик
  • вчера
  • 134 просмотра

Обратное содержимое массива в C++

В этом посте мы обсудим, как инвертировать содержимое массива в C++.

1. Использование std::reverse

Простое решение для на месте обратное содержимое массива использует std::reverse алгоритм из стандартной библиотеки. Обратный алгоритм определен в заголовок и может использоваться следующим образом:

std :: reverse ( std :: begin ( arr ) , std :: end ( arr ) ) ;
for ( int &i : arr ) < std :: cout << i << ' ' ;

результат:

5 4 3 2 1

2. Использование std::swap

Другой альтернативой является использование std::swap алгоритм, определенный в заголовок. Он работает путем замены значений объектов, на которые указывают указанные итераторы. Типичный призыв к std::swap Алгоритм будет выглядеть следующим образом, чтобы перевернуть массив:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *