В матрице поменять местами столбцы с максимальным и минимальным значением суммы элементов - C (СИ)

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

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

Народ, задача звучит так: необходимо в задаче размерностью N<=5, M<=10 (кол-во строк столбцов вводится вначале программы) вычислить сумму элементов для каждого столбца и поменять местами столбцы с максимальным и минимальным значением суммы, ну и собственно, отобразить полученную после свопа матрицу. Ввод матрицы, отображение исходной матрицы и сумму столбцов я написал, а вот как найти максимальное и минимальное значение суммы, а затем свопнуть соответствующие столбцы я не знаю. Можете помочь доделать/переделать программу? Исходный код:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int main(void)
  5. {
  6. int n,m;
  7. printf("Enter n: ");
  8. scanf("%d", &n);
  9. printf("\nEnter m: ");
  10. scanf("%d", &m);
  11. printf("\n");
  12. ////////////////////////////
  13. int mas[n][m];
  14. int i,j;
  15. for (i=1; i<=n; i++)
  16. {
  17. for (j=1; j<=m; j++)
  18. {
  19. printf("a[%d,%d] = ", i, j);
  20. scanf("%d", &mas[i][j]);
  21. }
  22. }
  23. printf("\n");
  24. ////////////////////////////
  25. printf("\n---MATRIX---\n\n");
  26. for (i=1; i<=n; i++)
  27. {
  28. for (j=1; j<=m; j++)
  29. {
  30. printf("%d ", mas[i][j]);
  31. }
  32. printf("\n");
  33. }
  34. printf("\n");
  35. ////////////////////////////
  36. printf("\n---COLUMN SUMM---\n\n");
  37. for (j=1; j<=m; j++)
  38. {
  39. int s=0;
  40. for (i=1; i<=n; i++)
  41. {
  42. s+=mas[i][j];
  43. }
  44. printf("COL %d | %d\n", j, s);
  45. }
  46. printf("\n");
  47. }

Решение задачи: «В матрице поменять местами столбцы с максимальным и минимальным значением суммы элементов»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     int n,m,max=-999,min=-999,max_index=0,min_index=0;
  6.     printf("Enter n: ");
  7.     scanf("%d", &n);
  8.     printf("\nEnter m: ");
  9.     scanf("%d", &m);
  10.     printf("\n");
  11. ////////////////////////////
  12.     int mas[n][m];
  13.     int i,j;
  14.     for (i=0; i<n; i++)
  15.     {
  16.         for (j=0; j<m; j++)
  17.         {
  18.           printf("a[%d,%d] = ", i, j);
  19.           scanf("%d", &mas[i][j]);
  20.         }
  21.     }
  22.     printf("\n");
  23. ////////////////////////////
  24.     printf("\n---MATRIX---\n\n");
  25.     for (i=0; i<n; i++)
  26.     {
  27.         for (j=0; j<m; j++)
  28.         {
  29.             printf("%d ", mas[i][j]);
  30.         }
  31.         printf("\n");
  32.     }
  33.     printf("\n");
  34. ////////////////////////////
  35.     printf("\n---COLUMN SUMM---\n\n");
  36.  
  37.     for (j=0; j<m; j++)
  38.     {
  39.         int s=0;
  40.         for (i=0; i<n; i++)
  41.         {
  42.             s+=mas[i][j];
  43.         }
  44.         printf("COL %d | %d\n", j, s);
  45.         if(s>max)
  46.             {
  47.                 max=s;
  48.                 max_index=j;
  49.             }
  50.         if(s<min)
  51.             {
  52.                 min=s;
  53.                 min_index=j;
  54.             }
  55.     }
  56.     printf("\n");
  57.  
  58. //------swap----------
  59. int tmp;
  60. for(i=0;i<n;i++)
  61. {
  62.     for(j=0;j<m;j++)
  63.     {
  64.         tmp=mas[i][min_index];
  65.         mas[i][min_index]=mas[i][max_index];
  66.         mas[i][max_index]=tmp;
  67.     }
  68. }
  69. //-------------
  70. //---print---
  71.  printf("\n---MATRIX---\n\n");
  72.     for (i=0; i<n; i++)
  73.     {
  74.         for (j=0; j<m; j++)
  75.         {
  76.             printf("%d ", mas[i][j]);
  77.         }
  78.         printf("\n");
  79.     }
  80.     printf("\n");
  81.  
  82. return 0;
  83. }

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

В этом коде выполняются следующие действия:

  1. Запрашивается у пользователя ввод количества строк и столбцов для создаваемой матрицы с помощью функции scanf().
  2. Создается матрица, заполняемая пользователем с помощью двух вложенных циклов и функции scanf().
  3. Выводится на экран созданная матрица с помощью двух вложенных циклов и функции printf().
  4. Для каждого столбца вычисляется сумма элементов с помощью цикла и функции scanf().
  5. Если текущая сумма больше максимальной, то обновляются значения максимальной суммы и индекса столбца с максимальной суммой.
  6. Если текущая сумма меньше минимальной, то обновляются значения минимальной суммы и индекса столбца с минимальной суммой.
  7. С помощью двух вложенных циклов и временной переменной tmp выполняется перестановка элементов в выбранных столбцах.
  8. Выводится на экран измененная матрица с помощью двух вложенных циклов и функции printf().
  9. Программа завершается возвратом значения 0 из функции main().

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


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

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

10   голосов , оценка 4 из 5

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

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

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