@quarttt

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

Я передал двумя способами массив в функцию:

void print_int(int arg) { printf("%d\n", arg); } 

int f(int* array, int size) { 
   for (int i = 0; i < size; i = i + 1)
      print_int(array[i]);
}

int g(int* array, int* limit) { 
   for (int* current = array; current < limit; current = current + 1)
      print_int( *current );
}

int main() {
   int array[] = { 1, 2, 3, 4, 5 };
   f( array, 5 );
   g( array, array + 5);
   
   return 0;
}


Теперь хочу перевернуть их : 1 2 3 4 5 -> 5 4 3 2 1
Подскажите как можно это сделать
  • Вопрос задан
  • 3522 просмотра
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy
Android developer at Yandex
Нужно пройти массив с начала и с конца одновременно, меняя элементы местами, до тех пор, пока счётчик начала не стане больше либо равен счётчику конца.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
В цикле до половины массива, в цикле 2 счетчика: счетчик с начала массива увеличивающийся и счетчик с конца уменьшающийся. На каждой итерации меняешь местами элементы массива индексируемые счетчиками.
В случае не четного количества элементов, центральный элемент остается на месте.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы