Поменять порядок элементов массива, стоящих на нечетных местах, на обратный - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Составить функцию, которая меняет порядок элементов массива, стоящих на нечетных местах, на обратный. Например, для исходного массива 1,2,3,4,5,6 результатом является 5,2,3,4,1,6
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int nol(int a[], int b) {
  5. int i;
  6. for (i = 1; i<b; i++)
  7. a[i] = 0;
  8. return 0;
  9. }
  10. int zap(int a[], int b, int d1, int d2){
  11. srand(time(NULL));
  12. int i;
  13. for (i = 0; i<b; i++)
  14. a[i] = d1 + rand() / (RAND_MAX / (d2 - d1 + 1));
  15. return 0;
  16. }
  17. int vivod(int a[], int b){
  18. int i;
  19. for (i = 0; i<b; i++)
  20. printf("%d ", a[i]);
  21. printf("\n");
  22. return 0;
  23. }
  24. void f(int *m, int s) {
  25. int temp;
  26. int b = 0;
  27. int e = 0;
  28. if (s = 1)
  29. e = s - 1;
  30. else
  31. e = s - 2;
  32. while (b < e) {
  33. temp = m[b];
  34. m[b] = m[e];
  35. m[e] = temp;
  36. b += 2;
  37. e -= 2;
  38. }
  39. }
  40. int main(void) {
  41. int mas[10];
  42. zap(mas, 10, 1, 50);
  43. vivod(mas, 10);
  44. f(mas, 10);
  45. zap(mas, 10, 1, 50);
  46. vivod(mas, 10);
  47. return 0;
  48. }
помогите,поажлуйста

Решение задачи: «Поменять порядок элементов массива, стоящих на нечетных местах, на обратный»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. void reverse(int* arr, int size) {
  4.     int last = size - 2 + size%2;
  5.     int i;
  6.     for (i = 0; i < size/2; i += 2) {
  7.         int tmp = arr[i];
  8.         arr[i] = arr[last-i];
  9.         arr[last-i] = tmp;
  10.     }
  11. }
  12.  
  13. int main() {
  14.     int arr[] = { 1, 2, 3, 4, 5, 6 };
  15.     int size = sizeof(arr)/sizeof(arr[0]);
  16.     int i;
  17.     reverse(arr, size);
  18.     for (i = 0; i < size; ++i) {
  19.         printf("%d ", arr[i]);
  20.     }
  21.     return 0;
  22. }

Объяснение кода листинга программы

В данном коде реализован алгоритм перестановки элементов массива, стоящих на нечетных позициях, на обратный порядок.

  1. В функции reverse объявлены две переменные: last и i. Переменная last вычисляется как size - 2 + size % 2, где size - размер массива, а size % 2 - остаток от деления размера массива на 2. Это необходимо для корректной работы цикла, когда размер массива нечетный. Переменная i инициализируется значением 0.
  2. Затем в цикле for происходит перебор элементов массива, начиная с первого и заканчивая size/2. В каждой итерации выполняется следующее действие:
    • Переменная tmp копирует значение текущего элемента массива.
    • Значение текущего элемента массива присваивается значению элемента с индексом last-i, т.е. элементу, стоящему на обратной позиции относительно текущего.
    • Значение элемента с индексом last-i присваивается переменной tmp, т.е. исходному значению текущего элемента массива.
  3. В функции main объявлен массив arr и переменная size, которая вычисляется как sizeof(arr)/sizeof(arr[0]). Затем выполняется вызов функции reverse с аргументами arr и size.
  4. После этого в цикле for происходит вывод всех элементов массива с помощью функции printf.
  5. В конце функции main возвращается 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.545 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы