Заменить матрицу, чтобы первой стояла строка с max суммой элементов, а последней - с min суммой - C (СИ)

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

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

заменить заданную прямоугольную матрицу так, чтобы на первом месте стояла строка максимальной а на последнем месте строка с минимальной суммой элементов, сохранив все элементы исходной матрицы. Что не так, поправьте пожалуйста.
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. int i, j, l, maxstr, sum, minstr, n, max, min, k, u;
  6. int main()
  7. {
  8. int a[i][j], b[i][j];
  9. printf("kolichestvo strok matrici=");
  10. scanf("%d",&n);
  11. printf("kolichestvo stolbcov matrici=");
  12. scanf("%d",&l);
  13. for(i = 0; i < n; i++)
  14. {
  15. for (j = 0; j <l; j++)
  16. {
  17. printf("Vvedite b[%d][%d]", i, j);
  18. scanf("%d",&b[i][j]);
  19. }
  20. }
  21. for (i=0;i<n;i++)
  22. {
  23. printf("\n");
  24. for (j=0;j<l;j++)
  25. {
  26. printf("%d ",b[i][j]);
  27. }
  28. }
  29. sum=0;
  30. for (j=0;j<l;j++)
  31. {
  32. sum=sum+b[1][j];
  33. max=sum;
  34. maxstr=0;
  35. min=sum;
  36. minstr=0;
  37. }
  38. for (i=0;i<n;i++)
  39. { sum=0;
  40. for (j=0; j<l;j++)
  41. { sum=sum+b[i][j];
  42. if (max>sum)
  43. {
  44. max=sum;
  45. maxstr=i;
  46. }
  47. if (min<sum)
  48. {
  49. min=b[i][j];
  50. minstr=i;
  51. }
  52. }
  53. }
  54. if(min!=max)
  55. {
  56. for (j=0;j<l;j++)
  57. {
  58. a[0][j]=b[maxstr][j];
  59. }
  60. for (i=0;i<n;i++)
  61. {
  62. k=0;
  63. if (i!=maxstr)
  64. {
  65. if (i!=minstr)
  66. {
  67. k++;
  68. for (j=0;j<l;j++)
  69. {
  70. b[k][j]=a[i][j];
  71. }
  72. }
  73. }
  74. }
  75. for (j=0;j<l;j++)
  76. {
  77. a[n][j]=b[minstr][j];
  78. }
  79. }
  80. else
  81. {
  82. printf(summa vseh stroc ravna);
  83. }
  84. for (i=0;i<n;i++)
  85. {
  86. printf("\n");
  87. for (j=0;j<l;j++)
  88. {
  89. printf("%d ",a[i][j]);
  90. }
  91. }
  92. system("PAUSE");
  93. return 0;
  94. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. //заменить заданную прямоугольную матрицу так, чтобы на первом месте стояла
  4. //строка максимальной а на последнем месте строка с минимальной суммой элементов,
  5. // сохранив все элементы исходной матрицы.
  6. int main()
  7. {
  8.     int i, j, l, maxstr, minstr, n, max = 0, min, sum, **p = NULL, *tmp;
  9.     printf("kolichestvo strok matrici=");
  10.     scanf("%d",&n);
  11.     printf("kolichestvo stolbcov matrici=");
  12.     scanf("%d",&l);
  13.     p = malloc(n * sizeof(*p));
  14.     for(i = 0; i < n; i++){
  15.         p[i] = malloc(l * sizeof(p));
  16.         for (j = 0; j <l; j++){
  17.             printf("Vvedite b[%d][%d]", i, j);
  18.             scanf("%d", &p[i][j]);
  19.             if(i == 0)
  20.                 max += p[i][j];
  21.         }
  22.     }
  23.     min = max;
  24.     maxstr = minstr = 0;
  25.     puts("Source matrix:");
  26.     for (i = 0; i < n; i++){
  27.         sum = 0;
  28.         for (j = 0; j < l; j++){
  29.             printf("%6d",p[i][j]);
  30.             sum += p[i][j];
  31.         }
  32.         if(sum > max){
  33.             max = sum;
  34.             maxstr = i;
  35.         }
  36.         if(sum < min){
  37.             min = sum;
  38.             minstr = i;
  39.         }
  40.         printf("\n");
  41.     }
  42.     printf("maximum sum is row %d = %d minimum sum is row  %d = %d\n", maxstr, max, minstr, min);
  43.     puts("Sorted matrix:");
  44.     tmp = p[0];
  45.     p[0] = p[maxstr];
  46.     p[maxstr] = tmp;
  47.     tmp = p[n - 1];
  48.     p[n - 1] = p[minstr];
  49.     p[minstr] = tmp;
  50.     for(i = 0; i < n; i++){
  51.         for(j = 0; j < l; j++)
  52.             printf("%6d", p[i][j]);
  53.         printf("\n");
  54.     }
  55.     for(i = 0; i < n; i++)
  56.         free(p[i]);
  57.     free(p);
  58.     p = NULL;
  59. return 0;
  60.  
  61. }

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

  1. Подключение необходимых библиотек
  2. Задание постановки задачи
  3. Объявление переменных: i, j, l, maxstr, minstr, n, max, min, sum, *p = NULL, tmp;
  4. Ввод количества строк и столбцов матрицы
  5. Выделение памяти под матрицу
  6. Ввод элементов матрицы
  7. Инициализация переменных max и min значением первого элемента матрицы
  8. Поиск строки с максимальной суммой элементов
  9. Поиск строки с минимальной суммой элементов
  10. Вывод исходной матрицы
  11. Вывод матрицы с замещенными строками
  12. Освобождение памяти

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


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

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

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

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

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

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