Упорядочить столбцы матрицы, чтобы их последние элементы образовывали убывающую последовательность - C (СИ)

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

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

Задали задачу на Си. Дана матрица размера M x N. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность. написал код:
Листинг программы
  1. #include <stdio.h>
  2. main()
  3. {
  4. int mas[3][3]={1,2,3,4,5,6,7,8,9},i,j,z,temp;
  5.  
  6. for(j=0,i=2,z=1;j<3;j++,z++)
  7. {
  8. if(mas[i][j]<mas[i][z])
  9. {
  10. printf("+");
  11. }
  12. }
  13. for(i=0;i<3;i++)
  14. for(j=0;j<3;j++)
  15. {
  16. printf("%d",mas[i][j]);
  17. }
  18. }
если запустить, то выбьет три плюса, тоесть проверка на то что столбцы возрастающие, но как сделать чтобы они местами менялись? помогите пожайлуста

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <malloc.h>
  4. #include <stdlib.h>
  5. int main()
  6. {
  7.         float **mass,**mass1,temp;//mass - исходный, mass1 - новый с учетом дублирования
  8.     int i,j,n,m,k=0,y=0,n1,m1,c=0; //n - строки, m - столбцы 1 масссива, n1 m1 второго, temp - temp)
  9.           printf("BBEDUTE PA3MEPHOCTb MACCUBA\n");
  10.           printf("BBEDUTE N\n");
  11.           scanf("%d",&n);
  12.           printf("BBEDUTE M\n");
  13.           scanf("%d",&m);
  14.           n1=n+1;//учет дублирования
  15.           m1=m;
  16.           //--------------------------выделение памяти
  17. mass=(float**)malloc(n*sizeof(float*));
  18. for(i=0;i<n;i++)
  19. {
  20. mass[i]=(float*)malloc(m*sizeof(float));
  21. }
  22. mass1=(float**)malloc(n1*sizeof(float*));
  23. for(i=0;i<n1;i++)
  24. {
  25. mass1[i]=(float*)malloc(m1*sizeof(float));
  26. }
  27. //--------------------------/выделение памяти
  28. //------------------------------zapolnenie и вывод---------------------------
  29. for (i=0;i<n;i++)
  30.           {
  31.                 for (j=0; j<m; j++)
  32.                 {
  33.                   mass[i][j]=rand()%100;
  34.                   mass1[i][j]=mass[i][j];
  35.                 }
  36.                 printf("\n");
  37.           }
  38. for(i=0;i<n;i++)
  39. {
  40. for(j=0;j<m;j++)
  41. {
  42. printf("   [%d][%d]=%5.2f",i,j,mass[i][j]);
  43. }
  44. printf("\n");  
  45. }
  46. //------------------------------/zapolnenie и вывод---------------------------
  47. printf(" -----------------------------------------------\n");
  48.  
  49. for(i=0;i<n-1;i++)
  50.     for(j=0; j<n-1; j++)
  51.         if(mass1[j][0]>mass1[j+1][0])
  52.             for(k=0; k<m1; k++)
  53.             {
  54.                 temp=mass1[j][k];
  55.                 mass1[j][k]=mass1[j+1][k];
  56.                 mass1[j+1][k]=temp;
  57.             }
  58.  for(i=0; i<m1; i++)
  59.      mass1[n1-1][i]=mass1[n1-2][i];
  60.  
  61. printf(" -----------------------------------------------\n");
  62. //-----------------------конечный вывод 2 массива
  63. for(i=0;i<n1;i++)
  64. {
  65. for(j=0;j<m1;j++)
  66. {
  67. printf("   [%d][%d]=%3.2f",i,j,mass1[i][j]);
  68. }
  69. printf("\n");  
  70. }
  71. //-----------------------/конечный вывод 2 массива
  72. return 0;
  73. }

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

Код выполняет следующие действия:

  1. Ввод от пользователя
    • n - количество строк в матрице
    • m - количество столбцов в матрице
  2. Выделение памяти
    • mass и mass1 - двумерные массивы, в которых будут храниться исходные и упорядоченные данные соответственно
    • mass и mass1 выделяются с помощью функции malloc
  3. Заполнение матрицы случайными значениями
    • значения для mass и mass1 генерируются с помощью функции rand()%100
  4. Вывод исходной матрицы
    • значения матрицы mass выводятся на экран с помощью цикла for
  5. Упорядочивание матрицы
    • используется цикл for для перебора строк матрицы
    • для каждой строки используется еще один цикл for для перебора столбцов
    • если значение в текущем столбце больше значения в следующем столбце, происходит перестановка этих значений
    • после завершения перебора всех строк, последнее значение в последней строке перемещается в первую позицию последней строки
  6. Вывод упорядоченной матрицы
    • значения матрицы mass1 выводятся на экран с помощью цикла for
  7. Освобождение памяти
    • массивы mass и mass1 освобождаются с помощью функции free()

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


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

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

14   голосов , оценка 3.857 из 5

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

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

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