Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Sting95
2 / 2 / 0
Регистрация: 05.10.2013
Сообщений: 91
1

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

28.04.2014, 15:14. Просмотров 683. Ответов 3
Метки нет (Все метки)

Нужно перевести этот код:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2014, 15:14
Ответы с готовыми решениями:

Создать матрицу , вывести на экран , найти строку с наименьшей и наибольшей суммой элементов
ребята , помогите решить такую задачку: Создать матрицу , вывести на экран , найти строку с...

Задача на матрицу. Найти строку с наибольшей и наименьшей суммой элементов
Помогите составить программу: Дана прямоугольная матрица. Найти строку с наибольшей и наименьшей...

Заполнить массив как константу и сортировать по возрастанию строку с наименьшей суммой элементов
Задание: Заполнить массив как константу и сортировать по возрастанию строку с наименьшей суммой...

Найти строку с наибольшей и наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов
Найти строку с наибольшей и наименьшей сум- мой элементов. Вывести на печать найденные строки...

Массив: Как вывести в label строку с самой наименьшей суммой элементов?
public void random() { for (int i = 0; i &lt; m; i++) for (int j = 0; j &lt; n; j++)...

3
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26844 / 17988 / 7109
Регистрация: 22.10.2011
Сообщений: 31,669
Записей в блоге: 6
28.04.2014, 16:39 2
Что за привычка - давать код, который нужно переводить с другого языка, при этом ни слова не говоря о том, что этот код должен делать?
1
Sting95
2 / 2 / 0
Регистрация: 05.10.2013
Сообщений: 91
28.04.2014, 16:41  [ТС] 3
UI,
Создать массив, вывести его на экран в общепринятом виде и сортировать по возрастанию строку с наименьшей суммой элементов. Вывести результирующий массив на экран.

1) В программе предусмотреть заполнение массива тремя способами: задать
массив как константу, заполнить массив случайными числами, ввести
массив с клавиатуры.
Выбор типа заполнения выполняется с помощью простого меню:
Как заполнять массив?
1. Как константу.
2. Случайные числа.
3. Вручную.
Введите номер выбора. Меню организовано с помощью оператора SWITCH_САSЕ.
0
korvin_
2302 / 1802 / 336
Регистрация: 28.04.2012
Сообщений: 6,285
28.04.2014, 17:41 4
Лучший ответ Сообщение было отмечено Sting95 как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#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;
}
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
% tcc -run test.c
Select array input method:
1 - use predefined constant
2 - random
3 - manual
> 1
 12   3  15   7
 22  14   6   5
 17   5  20   9
row with minimal sum is 0
  3   7  12  15
 22  14   6   5
 17   5  20   9
 
% tcc -run test.c
Select array input method:
1 - use predefined constant
2 - random
3 - manual
> 2
  9   3   8   6
  5  11   6   4
 10   2   3   6
row with minimal sum is 2
  9   3   8   6
  5  11   6   4
  2   3   6  10
 
% tcc -run test.c
Select array input method:
1 - use predefined constant
2 - random
3 - manual
> 3
1 2 3 4
5 6 7 8
3 2 1 0
  1   2   3   4
  5   6   7   8
  3   2   1   0
row with minimal sum is 2
  1   2   3   4
  5   6   7   8
  0   1   2   3
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 17:41

Поменять местами строку матрицы с наименьшей суммой элементов со строкой с наибольшей суммой элементов
Помогите плиз решить несколько задас на преобразование матриц на С++ 1.В действительной матрице...

Процедуры: определить столбец с наибольшей суммой и заменить на строку с наименьшей суммой элементов
Всем привет, срочно помогите пожалуйста с программой. Я ее написал (вернее не я), но нужно оформить...

Прочитать матрицу из файла, отсортировать по возрастанию элементов строк и вывести
Записать в файл произвольную матрицу, прочитать полученный файл и вывести матрицу, отсортированную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru