Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 17.11.2016
Сообщений: 24
1

В матрице строку с наибольшей суммой элементов записать в обратном порядке

11.12.2016, 20:39. Показов 626. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
для произвольной матрицы строку с наибольшей суммой элементов записать в обратном порядке. Матрица должна быть со строчками и столбцами.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2016, 20:39
Ответы с готовыми решениями:

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

В матрице размера n*m найти строку с наибольшей суммой элементов
В матрице размера n*m найти строку с наибольшей суммой элементов.

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

В матрице найти строку с наибольшей суммой элементов, исключая строки где есть 0
В матрице размером A(N#M) найти строку с наибольшей суммой элементов, исключая строки где есть 0.

6
охотник
1011 / 535 / 650
Регистрация: 29.09.2014
Сообщений: 1,083
11.12.2016, 21:19 2
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
const n=4;m=6;
type mas=array[1..m] of integer;
     matr=array[1..n] of mas;
var i,smax,ismax:integer;
    a:matr;
     function sum(x:mas):integer;
     var j,s:integer; 
      begin
       s:=0;
       for j:=1 to m do s:=s+x[j];
       sum:=s
      end;    
     procedure in_matr(var x:matr);
     var i,j:integer;
      begin
       for i:=1 to n do
        for j:=1 to m do
         x[i,j]:=-10+random(21)
      end;
     procedure out_matr(var x:matr;s:string);
     var i,j:integer;
      begin
       writeln(s);
       for i:=1 to n do
        begin
         for j:=1 to m do write(x[i,j]:4);
         writeln
        end 
      end;
     procedure obr(var x:mas);
     var j,tmp:integer;
      begin
       for j:=1 to m div 2 do begin tmp:=x[j];x[j]:=x[m-j+1];x[m-j+1]:=tmp end
      end;
begin
 in_matr(a);out_matr(a,'Исходная матрица со строчками и столбцами:');
 smax:=sum(a[1]);ismax:=1;
 for i:=2 to n do if sum(a[i])>smax then begin smax:=sum(a[i]);ismax:=i end;
 writeln('Строка с максимальной суммой элементов: ',ismax);
 obr(a[ismax]);
 out_matr(a,'Полученная матрица со строчками и столбцами:')
end.
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
12.12.2016, 06:04 3
Другой вариант реверса строки:
Pascal
30
31
32
33
34
35
36
37
procedure obr(var x:mas);
var i, j, t: Integer;
begin
  i:=1; j:=m;
  while i<j do begin
    t:=x[i]; x[i]:=x[j]; x[j]:=t; Inc(i); Dec(j);
  end;
end;
0
0 / 0 / 1
Регистрация: 17.11.2016
Сообщений: 24
12.12.2016, 19:55  [ТС] 4
это же для одномерного массива . А как сделать это для двумерного?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
12.12.2016, 20:25 5
Pascal
30
31
32
33
34
35
36
37
procedure obr(var x:matr; k: Integer);
var i, j, t: Integer;
begin
  i:=1; j:=m;
  while i<j do begin
    t:=x[k,i]; x[k,i]:=x[k,j]; x[k,j]:=t; Inc(i); Dec(j);
  end;
end;
Но зачем, если можно передавать отдельную строку? См. внимательно на строку 40.

Добавлено через 2 минуты
Pascal
1
2
3
4
5
6
7
8
9
10
type
  mas=array[1..m] of integer;
  matr=array[1..n] of mas;
...
procedure obr(var x:mas);
...
var
  a: matr;
...
  obr(a[ismax]);  { строка 40 }
Добавлено через 4 минуты
Можно сделать еще немного универсальнее без промежуточного типа mas:
Pascal
30
31
32
33
34
35
36
37
38
39
40
41
type matr: array [1..n,1..m] of Integer;
 
procedure obr(var x: array of Integer);
var i, j, t: Integer;
begin
  i:=Low(x); j:=High(x);
  while i<j do begin
    t:=x[i]; x[i]:=x[j]; x[j]:=t; Inc(i); Dec(j);
  end;
end;
...
  obr(a[ismax]);  { строка 40 }
1
0 / 0 / 1
Регистрация: 17.11.2016
Сообщений: 24
12.12.2016, 21:02  [ТС] 6
Спасибо за помощь)
0
0 / 0 / 1
Регистрация: 17.11.2016
Сообщений: 24
15.12.2016, 17:06  [ТС] 7
А как прочитать эту программу ,то есть пояснить что делает каждое действие ? Может кто помочь с этим?
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
const n=4;m=6;
type mas=array[1..m] of integer;
     matr=array[1..n] of mas;
var i,smax,ismax:integer;
    a:matr;
     function sum(x:mas):integer;
     var j,s:integer; 
      begin
       s:=0;
       for j:=1 to m do s:=s+x[j];
       sum:=s
      end;    
     procedure in_matr(var x:matr);
     var i,j:integer;
      begin
       for i:=1 to n do
        for j:=1 to m do
         x[i,j]:=-10+random(21)
      end;
     procedure out_matr(var x:matr;s:string);
     var i,j:integer;
      begin
       writeln(s);
       for i:=1 to n do
        begin
         for j:=1 to m do write(x[i,j]:4);
         writeln
        end 
      end;
     procedure obr(var x:mas);
     var j,tmp:integer;
      begin
       for j:=1 to m div 2 do begin tmp:=x[j];x[j]:=x[m-j+1];x[m-j+1]:=tmp end
      end;
begin
 in_matr(a);out_matr(a,'Исходная матрица со строчками и столбцами:');
 smax:=sum(a[1]);ismax:=1;
 for i:=2 to n do if sum(a[i])>smax then begin smax:=sum(a[i]);ismax:=i end;
 writeln('Строка с максимальной суммой элементов: ',ismax);
 obr(a[ismax]);
 out_matr(a,'Полученная матрица со строчками и столбцами:')
end.
__________________
0
15.12.2016, 17:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2016, 17:06
Помогаю со студенческими работами здесь

В матрице А найти строку с наибольшей суммой элементов, исключая строки где есть ноль
В матрице А найти строку с наибольшей суммой элементов, исключая строки где есть ноль.

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

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

В матрице размерностью MxN найти номер строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей суммы
Данная матрица размерности M x N. Найти номер ее строки с наибольшей суммой элементов и вывести...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru