Перевернуть четные строки двумерного массива - C (СИ) (74984)

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

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

Здравствуйте, нужно перевернуть четные строки двумерного массива . переворот одномерного ясен но вот с двумерным не выходит. помогите добавить условие плиз!!! Вот что вышло но программа выдает ошибку
Листинг программы
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. int **formMatr (int n, int m)
  5. {
  6. int **matr = new int *[n];
  7. for (int i=0; i<n; i++)
  8. matr[i]=new int [m];
  9. return matr;
  10. }
  11. int **formMatr2 (int **matr,int n, int m)
  12. {
  13. for (int i=0; i<n; i++)
  14. for (int j=0; j<m; j++)
  15. matr[i][j]=rand()%20;
  16.  
  17. return matr;
  18. }
  19. void print (int **matr, int n, int m)
  20. {
  21. for (int i=0; i<n; i++)
  22. {
  23. for (int j=0; j<m; j++) printf ("%7d ",matr[i][j]) ;
  24. printf ("\n" ) ;
  25. }
  26. }
  27. int ** dell (int **matr,int n, int m)
  28. {
  29. int i;
  30. if (i % 2 == 0)
  31. for (int i=0; i < n; i++)
  32. for (int j=0; j < m; j++)
  33. {
  34. int tmp = matr[i][j];
  35. matr[i][j] = matr[i][n-1-j];
  36. matr[i][n-1-j] = tmp;
  37. }
  38. }
  39. int main ()
  40. {
  41. int **matr;
  42. int n=3,m=3;
  43. matr=formMatr(n,m);
  44. matr=formMatr2(matr,n,m);
  45. print (matr,n,m);
  46. matr=dell(matr,n,m);
  47. print (matr,n,m);
  48. for (int i=0; i<n; ++i)
  49. delete [] matr [i];
  50. delete [] matr ;
  51. system("PAUSE");
  52. return 0;
  53. }

Решение задачи: «Перевернуть четные строки двумерного массива»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. void setArray(int* b[],int x,int y)
  5. {
  6. int i,j;
  7. for (j=0;j<y;j++)
  8.     {
  9.     int* a=calloc(x,sizeof(int));
  10.         for (i=0;i<x;i++)
  11.         {
  12.         a[i]=1+rand()%9;
  13.         }
  14.     b[j]=&a[0];
  15.     }
  16. }
  17.  
  18. void printArray(int* a[],int x,int y)
  19. {
  20. int i,j;
  21.     for (j=0;j<y;j++)
  22.     {
  23.         for (i=0;i<x;i++)
  24.         {
  25.         printf("%3d",a[j][i]);
  26.         }
  27.     printf("\n");
  28.     }
  29. }
  30.  
  31. void swapArray(int* b[],int x,int y)
  32. {
  33. int i,j,k,temp;
  34.     for (j=0;j<y;j++)
  35.     {
  36.         if (j%2==0)
  37.         {
  38.             for (i=0,k=x-1;i<x/2;i++,k--)
  39.             {
  40.             temp=b[j][k];
  41.             b[j][k]=b[j][i];
  42.             b[j][i]=temp;
  43.             }
  44.         printf("\n");
  45.         }
  46.     }
  47. }
  48.  
  49.  
  50.  
  51. int main()
  52. {
  53. // переменные
  54.     int x,y,i,j;
  55. // ввод размерности массива
  56.  
  57.     srand(time(0));
  58.     printf("Please enter size array x:");
  59.     scanf("%d",&x);
  60.     printf("Please enter size array y:");
  61.     scanf("%d",&y);
  62.  
  63.  
  64.     int** b=calloc(y,sizeof(int));//выделения памяти под массив указателей
  65.  
  66.     setArray(b,x,y);    // функция заполнения массива случайными числами
  67.     printArray(b,x,y);       // функция вывода массива
  68.  
  69.     swapArray(b,x,y);   // функция замены порядка элементов
  70.     printf("\n");
  71.     printArray(b,x,y);
  72.     return 0;
  73. }

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

  1. В функции setArray создается двумерный массив a размером x на y, заполняется случайными числами от 1 до 9 и сохраняется в b через calloc.
  2. В функции printArray двумерный массив a печатается построчно с использованием printf и символа табуляции \t для выравнивания элементов.
  3. В функции swapArray при j четном выполняется перестановка элементов в строке b[j] с помощью временной переменной temp.
  4. В функции main после ввода размеров массива и его заполнения случайными числами с помощью setArray и printArray, вызывается swapArray для перестановки четных строк и затем снова printArray для вывода измененного массива.

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


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

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

15   голосов , оценка 4.133 из 5

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

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

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