0 / 0 / 0
Регистрация: 25.10.2020
Сообщений: 10
1

Представление матрицы как массива строк. Обмен двух строк

20.11.2020, 13:30. Показов 532. Ответов 1

Author24 — интернет-сервис помощи студентам
Всем доброго дня. В моей задаче требуется обменять строки с максимальным и минимальным элементами квадратной матрицы. Все элементы различны. Представив матрицу как массив строк, я хочу обменивать нужные строки непосредственно. Буду благодарна обнаруженному недочёту в программе:
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
program matrix;
  const N = 3;
  type
    t_range = 1..N;
    t_row = array [t_range] of integer;
    t_matr = array [t_range] of t_row;
  
  procedure read_matr(var a: t_matr);
    var i, j: t_range;
    begin
      for i := 1 to N do
        for j := 1 to N do
          read(a[i, j]);
    end;
    
  function row_with_min_elem(a: t_matr): t_row;
    var 
      i, i_with_min, j: t_range;
      min: integer;
    begin
      i_with_min := 1;
      min := a[1, 1];
      for i := 1 to N do
        for j := 1 to N do 
          if a[i, j] < min then
          begin
            i_with_min := i;
            min := a[i, j];
          end;
      row_with_min_elem := a[i_with_min];
    end;
    
  function row_with_max_elem(a: t_matr): t_row;
    var 
      i, i_with_max, j: t_range;
      max: integer;
    begin
      i_with_max := 1;
      max := a[1, 1];
      for i := 1 to N do
        for j := 1 to N do 
          if a[i, j] > max then
          begin
            i_with_max := i;
            max := a[i, j];
          end;
      row_with_max_elem := a[i_with_max];
    end;
    
  procedure swap(var a, b: t_row);
    var 
      t: t_row;
    begin
      t := a;
      a := b;
      b := t;
    end;
    
  procedure write_matr(a: t_matr);
    var i, j: t_range;
    begin
      for i := 1 to N do
      begin
        writeln;
        for j := 1 to N do
          write(a[i, j]:5);
      end;
    end;
    
  var
    s: t_matr;
    x, y: t_row;
  begin
    read_matr(s);
    x := row_with_min_elem(s);
    y := row_with_max_elem(s);
    if x <> y then
      swap(x, y);
    write_matr(s);     
  end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2020, 13:30
Ответы с готовыми решениями:

Если сумма двух первых строк матрицы А меньше суммы элементов двух последних её строк
Если сумма двух первых строк матрицы А меньше суммы элементов двух последних её строк. Изменить...

Для матрицы из 3 столбцов и 7 строк отпечатать номера тех строк, в которых третий элемент больше суммы двух
Для матрицы из 3 столбцов и 7 строк отпечатать номера тех строк, в которых третий элемент больше...

Обмен содержимого двух строк.
НЕобходима написать функцию, которая меняет содержимое двух строк. Вот я написал, но компилятор...

Запишите в массив номера строк массива строк, которые содержат не более двух цифр
Дан одномерный массив строк, состоящих из цифр и букв латинского алфавита. запишите в числовой...

1
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
20.11.2020, 14:44 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
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
const N = 3;
type
t_range = 1..N;
t_row = array [t_range] of integer;
t_matr = array [t_range] of t_row;
procedure read_matr(var a: t_matr);
var i, j: t_range;
begin
for i := 1 to N do
for j := 1 to N do
readln(a[i][j]);
end;
 
function row_with_min_elem(a: t_matr): t_range;
var i, i_with_min, j: t_range;
    min: integer;
begin
i_with_min := 1;
min := a[1][1];
for i := 1 to N do
for j := 1 to N do
if a[i][j] < min then
 begin
  i_with_min := i;
  min := a[i][j];
 end;
row_with_min_elem := i_with_min;
end;
 
function row_with_max_elem(a: t_matr): t_range;
var i, i_with_max, j: t_range;
    max: integer;
begin
i_with_max := 1;
max := a[1][1];
for i := 1 to N do
for j := 1 to N do
if a[i][j] > max then
 begin
  i_with_max := i;
  max := a[i][j];
 end;
row_with_max_elem := i_with_max;
end;
procedure swap(var a, b: t_row);
var t:t_row;
begin
t := a;
a := b;
b := t;
end;
 
procedure write_matr(a: t_matr;st:string);
var i, j: t_range;
begin
writeln(st);
for i := 1 to N do
 begin
  for j := 1 to N do
  write(a[i][j]:5);
  writeln;
 end;
end;
 
var s: t_matr;
    x,y: t_range;
begin
read_matr(s);
write_matr(s,'Исходная матрица');
x := row_with_min_elem(s);
y := row_with_max_elem(s);
if x <> y then
 begin
  swap(s[x], s[y]);
  write_matr(s,'Обмен строк');
 end
else write('Максимальный и минимальный в одной строке обмена нет')
end.
1
20.11.2020, 14:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2020, 14:44
Помогаю со студенческими работами здесь

Обмен двух строк (swap) с использованием функции
Нужно обменять содержимое двух строк. Я так понимаю в main мы создаем две константных строки s1,s2,...

Задан набор строк S. Необходимо найти количество строк Si из S, представимых в виде конкатенации двух строк Sj и Sk из S
Валит 6 тест. Проверил на своих входных данных - все работает. Я в отчаянии Задан набор строк...

Обмен строк матрицы попарно с циклом WHILE
В своё время был дан Ваш ответ на программу по перестановке попарно столбцов в двумерном массиве...

Ввод матрицы, вывод матрицы, обмен строк
5. Даны матрицы А(6,3) и В(4,5).Найти наибольший элемент каждой матрицы и записать 1 в ту строку и...

Обмен строк/столбцов массива местами
Как в двумерном массиве тасовать строки/столбцы местами? В си я просто менял указатели, а тут чё...

Для матрицы из 6 строк и 5 столбцов отпечатать номера тех строк, сумма элементов которых кратна заданной величине, и число таких строк.
Для матрицы из 6 строк и 5 столбцов отпечатать номера тех строк, сумма элементов которых кратна...


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

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

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