Создать матрицу, вывести ее на экран и отсортировать по возрастанию строку с наименьшей суммой элементов (Pascal -> C) - C (СИ)

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

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

Нужно перевести этот код:
Листинг программы
  1. uses crt;
  2. const m=3;
  3. n=4;
  4. type mtr=array [1..m,1..n] of integer;
  5. procedure print(a:mtr;s:string);
  6. var i,j:integer;
  7. begin
  8. writeln(s);
  9. for i:=1 to m do
  10. begin
  11. for j:=1 to n do
  12. write(a[i,j]:4);
  13. writeln
  14. end;
  15. end;
  16. procedure min(a:mtr;var mn,imn:integer);
  17. var i,j,sm:integer;
  18. begin
  19. for i:=1 to m do
  20. begin
  21. sm:=0;
  22. for j:=1 to n do
  23. sm:=sm+a[i,j];
  24. if i=1 then
  25. begin
  26. mn:=sm;
  27. imn:=1
  28. end
  29. else if sm<mn then
  30. begin
  31. mn:=sm;
  32. imn:=i
  33. end;
  34. end;
  35. writeln('Минимальная сумма в строке ',imn,'=',mn)
  36. end;
  37. procedure sort(var a:mtr;imn:integer);
  38. var i,j,x:integer;
  39. begin
  40. for i:=1 to n-1 do
  41. for j:=i+1 to n do
  42. if a[imn,i]>a[imn,j] then
  43. begin
  44. x:=a[imn,i];
  45. a[imn,i]:=a[imn,j];
  46. a[imn,j]:=x
  47. end;
  48. end;
  49. var i,j,mn,imn:integer;
  50. L:char;
  51. a:mtr;
  52. begin
  53. clrscr;
  54. repeat
  55. clrscr;
  56. writeln('Как заполнить массив?');
  57. writeln('1.Как константу');
  58. writeln('2.Случайные числа');
  59. writeln('3.Вручную');
  60. writeln('Другое выход');
  61. readln(L);
  62. Case L of
  63. '1':begin
  64. clrscr;
  65. a[1,1]:=12;a[1,2]:=3; a[1,3]:=15;a[1,4]:=7;
  66. a[2,1]:=22;a[2,2]:=14;a[2,3]:=6; a[2,4]:=5;
  67. a[3,1]:=17;a[3,2]:=5; a[3,3]:=20;a[3,4]:=9;
  68. print(a,'Исходный массив:');
  69. min(a,mn,imn);
  70. sort(a,imn);
  71. print(a,'Отсортированный массив:');
  72. readln
  73. end;
  74. '2':begin
  75. clrscr;
  76. randomize;
  77. for i:=1 to m do
  78. for j:=1 to n do
  79. a[i,j]:=random(100);
  80. print(a,'Исходный массив:');
  81. min(a,mn,imn);
  82. sort(a,imn);
  83. print(a,'Отсортированный массив:');
  84. readln
  85. end;
  86. '3':begin
  87. clrscr;
  88. writeln('Введите элементы массива, целые числа');
  89. for i:=1 to m do
  90. for j:=1 to n do
  91. begin
  92. write('a[',i,',',j,']=');
  93. readln(a[i,j]);
  94. end;
  95. clrscr;
  96. print(a,'Исходный массив:');
  97. min(a,mn,imn);
  98. sort(a,imn);
  99. print(a,'Отсортированный массив:');
  100. readln
  101. end;
  102. else exit
  103. end;
  104. until not(L in ['1'..'3'])
  105. end.

Решение задачи: «Создать матрицу, вывести ее на экран и отсортировать по возрастанию строку с наименьшей суммой элементов (Pascal -> C)»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define M 3
  6. #define N 4
  7.  
  8. int array[M][N] = {
  9.     { 12,  3, 15, 7 },
  10.     { 22, 14,  6, 5 },
  11.     { 17,  5, 20, 9 }
  12. };
  13.  
  14. void
  15. random(void)
  16. {
  17.     int i, j;
  18.     for (i = 0; i < M; i++)
  19.         for (j = 0; j < N; j++)
  20.             array[i][j] = rand() % (M * N);
  21. }
  22.  
  23. int
  24. input(void)
  25. {
  26.     int i, j;
  27.     for (i = 0; i < M; i++)
  28.         for (j = 0; j < N; j++)
  29.             if (!scanf("%d", &array[i][j]))
  30.                 return 0;
  31.     return 1;
  32. }
  33.  
  34. void
  35. print(char *fmt)
  36. {
  37.     int i, j;
  38.     for (i = 0; i < M; i++) {
  39.         for (j = 0; j < N; j++)
  40.             printf(fmt, array[i][j]);
  41.         printf("\n");
  42.     }
  43. }
  44.  
  45. long
  46. sum(int *row)
  47. {
  48.     int j;
  49.     long s;
  50.     s = 0;
  51.     for (j = 0; j < N; j++)
  52.         s += row[j];
  53.     return s;
  54. }
  55.  
  56. int
  57. find(void)
  58. {
  59.     int i, imin;
  60.     long s, smin;
  61.     imin = 0;
  62.     smin = sum(array[0]);
  63.     for (i = 1; i < M; i++) {
  64.         s = sum(array[i]);
  65.         if (s < smin) {
  66.             smin = s;
  67.             imin = i;
  68.         }
  69.     }
  70.     return imin;
  71. }
  72.  
  73. void
  74. sort(int *row)
  75. {
  76.     int j, jmin, k, tmp;
  77.     for (j = 0; j < N-1; j++) {
  78.         jmin = j;
  79.         for (k = j+1; k < N; k++)
  80.             if (row[k] < row[jmin])
  81.                 jmin = k;
  82.         if (jmin != j) {
  83.             tmp = row[jmin];
  84.             row[jmin] = row[j];
  85.             row[j] = tmp;
  86.         }
  87.     }
  88. }
  89.  
  90. char
  91. promptmenu(void)
  92. {
  93.     printf("Select array input method:\n");
  94.     printf("1 - use predefined constant\n");
  95.     printf("2 - random\n");
  96.     printf("3 - manual\n");
  97.     printf("> ");
  98.     return getchar();
  99. }
  100.  
  101. int
  102. main(void)
  103. {
  104.     int i;
  105.     time_t t;
  106.     srand((unsigned) time(&t));
  107.    
  108.     switch (promptmenu()) {
  109.     case '1':
  110.         break;
  111.     case '2':
  112.         random();
  113.         break;
  114.     case '3':
  115.         if (!input()) {
  116.             fprintf(stderr, "wrong input\n");
  117.             return 1;
  118.         }
  119.         break;
  120.     default:
  121.         fprintf(stderr, "wrong input\n");
  122.         return 1;
  123.     }
  124.     print("%3d ");
  125.     i = find();
  126.     printf("row with minimal sum is %d\n", i);
  127.     sort(array[i]);
  128.     print("%3d ");
  129.    
  130.     return 0;
  131. }

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


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

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

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

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

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

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