Создать матрицу, вывести ее на экран и отсортировать по возрастанию строку с наименьшей суммой элементов (Pascal -> C) - C (СИ)
Формулировка задачи:
Нужно перевести этот код:
Листинг программы
- uses crt;
- const m=3;
- n=4;
- type mtr=array [1..m,1..n] of integer;
- procedure print(a:mtr;s:string);
- var i,j:integer;
- begin
- writeln(s);
- for i:=1 to m do
- begin
- for j:=1 to n do
- write(a[i,j]:4);
- writeln
- end;
- end;
- procedure min(a:mtr;var mn,imn:integer);
- var i,j,sm:integer;
- begin
- for i:=1 to m do
- begin
- sm:=0;
- for j:=1 to n do
- sm:=sm+a[i,j];
- if i=1 then
- begin
- mn:=sm;
- imn:=1
- end
- else if sm<mn then
- begin
- mn:=sm;
- imn:=i
- end;
- end;
- writeln('Минимальная сумма в строке ',imn,'=',mn)
- end;
- procedure sort(var a:mtr;imn:integer);
- var i,j,x:integer;
- begin
- for i:=1 to n-1 do
- for j:=i+1 to n do
- if a[imn,i]>a[imn,j] then
- begin
- x:=a[imn,i];
- a[imn,i]:=a[imn,j];
- a[imn,j]:=x
- end;
- end;
- var i,j,mn,imn:integer;
- L:char;
- a:mtr;
- begin
- clrscr;
- repeat
- clrscr;
- writeln('Как заполнить массив?');
- writeln('1.Как константу');
- writeln('2.Случайные числа');
- writeln('3.Вручную');
- writeln('Другое выход');
- readln(L);
- Case L of
- '1':begin
- clrscr;
- a[1,1]:=12;a[1,2]:=3; a[1,3]:=15;a[1,4]:=7;
- a[2,1]:=22;a[2,2]:=14;a[2,3]:=6; a[2,4]:=5;
- a[3,1]:=17;a[3,2]:=5; a[3,3]:=20;a[3,4]:=9;
- print(a,'Исходный массив:');
- min(a,mn,imn);
- sort(a,imn);
- print(a,'Отсортированный массив:');
- readln
- end;
- '2':begin
- clrscr;
- randomize;
- for i:=1 to m do
- for j:=1 to n do
- a[i,j]:=random(100);
- print(a,'Исходный массив:');
- min(a,mn,imn);
- sort(a,imn);
- print(a,'Отсортированный массив:');
- readln
- end;
- '3':begin
- clrscr;
- writeln('Введите элементы массива, целые числа');
- for i:=1 to m do
- for j:=1 to n do
- begin
- write('a[',i,',',j,']=');
- readln(a[i,j]);
- end;
- clrscr;
- print(a,'Исходный массив:');
- min(a,mn,imn);
- sort(a,imn);
- print(a,'Отсортированный массив:');
- readln
- end;
- else exit
- end;
- until not(L in ['1'..'3'])
- end.
Решение задачи: «Создать матрицу, вывести ее на экран и отсортировать по возрастанию строку с наименьшей суммой элементов (Pascal -> C)»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define M 3
- #define N 4
- int array[M][N] = {
- { 12, 3, 15, 7 },
- { 22, 14, 6, 5 },
- { 17, 5, 20, 9 }
- };
- void
- random(void)
- {
- int i, j;
- for (i = 0; i < M; i++)
- for (j = 0; j < N; j++)
- array[i][j] = rand() % (M * N);
- }
- int
- input(void)
- {
- int i, j;
- for (i = 0; i < M; i++)
- for (j = 0; j < N; j++)
- if (!scanf("%d", &array[i][j]))
- return 0;
- return 1;
- }
- void
- print(char *fmt)
- {
- int i, j;
- for (i = 0; i < M; i++) {
- for (j = 0; j < N; j++)
- printf(fmt, array[i][j]);
- printf("\n");
- }
- }
- long
- sum(int *row)
- {
- int j;
- long s;
- s = 0;
- for (j = 0; j < N; j++)
- s += row[j];
- return s;
- }
- int
- find(void)
- {
- int i, imin;
- long s, smin;
- imin = 0;
- smin = sum(array[0]);
- for (i = 1; i < M; i++) {
- s = sum(array[i]);
- if (s < smin) {
- smin = s;
- imin = i;
- }
- }
- return imin;
- }
- void
- sort(int *row)
- {
- int j, jmin, k, tmp;
- for (j = 0; j < N-1; j++) {
- jmin = j;
- for (k = j+1; k < N; k++)
- if (row[k] < row[jmin])
- jmin = k;
- if (jmin != j) {
- tmp = row[jmin];
- row[jmin] = row[j];
- row[j] = tmp;
- }
- }
- }
- char
- promptmenu(void)
- {
- printf("Select array input method:\n");
- printf("1 - use predefined constant\n");
- printf("2 - random\n");
- printf("3 - manual\n");
- printf("> ");
- return getchar();
- }
- int
- main(void)
- {
- int i;
- time_t t;
- srand((unsigned) time(&t));
- switch (promptmenu()) {
- case '1':
- break;
- case '2':
- random();
- break;
- case '3':
- if (!input()) {
- fprintf(stderr, "wrong input\n");
- return 1;
- }
- break;
- default:
- fprintf(stderr, "wrong input\n");
- return 1;
- }
- print("%3d ");
- i = find();
- printf("row with minimal sum is %d\n", i);
- sort(array[i]);
- print("%3d ");
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д