11 / 11 / 1
Регистрация: 02.05.2009
Сообщений: 29
1

Поменять местами строки, столбцы в матрице (чтобы упорядочить главную диагональ)

02.05.2009, 12:34. Показов 4320. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста дорешать задачу:

Разработать функцию, которая проверяет, расположены ли по возрастанию элементы главной диагонали квадратного массива. Разработать процедуру, которая меняет местами указанные строку и столбец двухмерного массива. Написать программу, которая с помощью обмена строк и столбцов двухмерного массива располагает элементы главной диагонали по возрастанию.

Первую часть задачи я сделал (написал функцию проверки)... дальше не знаю как быть...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2009, 12:34
Ответы с готовыми решениями:

В заданной матрице поменять местами первую строку и главную диагональ
используя технологию процедурного программирования, разработать программу обработки двумерных...

Поменять местами побочную и главную диагональ в матрице
Здравствуйте. Помогите, пожалуйста, написать программу которая меняет побочную и главную диагональ...

В квадратной матрице поменять местами главную диагональ со строкой содержащей максимальный элемент
Дана прямоугольная матрица nxm целых чисел (n,m<10 – ввод с клавиатуры, значения элементов массива...

В заданной квадратной матрице размера (2n+1)×(2n+1) поменять местами среднюю строку и главную диагональ
В заданной квадратной матрице размера (2n+1)×(2n+1) поменять местами среднюю строку и главную...

12
Почетный модератор
64302 / 47597 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.05.2009, 13:02 2
Первую часть задачи я сделал (написал функцию проверки)... дальше не знаю как быть..
Ну и где она?
0
11 / 11 / 1
Регистрация: 02.05.2009
Сообщений: 29
02.05.2009, 13:11  [ТС] 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
type
  a = array[1..100,1..100] of integer;
  
var
  mas:a;
  m,i,j,k:integer;
  flag:boolean;
 
function check(mas1:array [1..100,1..100] of integer;m1:integer):boolean;
var
  i1,j1:integer;
  flag1:boolean;
begin
  for i1:=1 to m1-1 do
  for j1:=i1 to m1-1 do
    if mas1[i1,j1]<mas1[i1+1,j1+1] then
    flag1:=true else
    flag1:=false;
  check:=flag1;
end;
 
begin
  writeln('количество строк и столбцов:');
  readln(m);
  writeln('вводите элементы массива:');
  for i:=1 to m do
  for j:=1 to m do
    readln(mas[i,j]);
  writeln('исходный массив:');
  for i:=1 to m do
    begin
      for j:=1 to m do
      write(mas[i,j]:3);
      writeln;
    end;
  flag:=check(mas,m);
  if flag=true then writeln('диагональ упорядочена по возрастанию')
  else writeln('диагональ упорядочена не по возрастанию');
end.
0
Почетный модератор
64302 / 47597 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.05.2009, 15:26 4
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
uses crt;
type
matr=array[1..20,1..20] of integer;
procedure Vvod(var mas1:matr;var m1:integer);
var i,j:integer;
begin
writeln('Введите размер матрицы:');
readln(m1);
writeln('Введите ',m1*m1,' элементов матрицы:');
for i:=1 to m1 do
for j:=1 to m1 do
readln(mas1[i,j]);
clrscr;
end;
procedure Vyvod(var mas1:matr;m1:integer);
var i,j:integer;
begin
for i:=1 to m1 do
  begin
    for j:=1 to m1 do
    write(mas1[i,j]:3);
    writeln;
  end;
end;
function check(mas1:matr;m1:integer):boolean;
var
i1,j1:integer;
begin
check:=true;
for i1:=1 to m1-1 do
if mas1[i1,i1]>=mas1[i1+1,i1+1] then
 begin
  check:=false;
  break;
 end;
end;
procedure Obmen(var mas1:matr;m1,x,y:integer);
var i,b:integer;
begin
for i:=1 to m1 do
 begin
  b:=mas1[x,i];{меняем строки с номерами x,y}
  mas1[x,i]:=mas1[y,i];
  mas1[y,i]:=b;
 end;
for i:=1 to m1 do
 begin
  b:=mas1[i,x];{меняем столбцы с номерами x,y}
  mas1[i,x]:=mas1[i,y];
  mas1[i,y]:=b;
 end;
end;
 
var
a:matr;
m,i,j:integer;
begin
clrscr;
Vvod(a,m);
writeln('Исходный массив:');
Vyvod(a,m);
if check(a,m) then
 begin
  writeln('Диагональ упорядочена по возрастанию!');
  readln;
  exit;
 end
else
 begin
  for i:=1 to m-1 do{сортировка обменом строк и столбцов}
  for j:=i+1 to m do
  if a[i,i]>a[j,j] then Obmen(a,m,i,j);{по возрастанию диагонального элемента}
 end;
writeln('Матрица с диагональю, упорядоченной по возрастанию:');
Vyvod(a,m);
readln
end.
1
11 / 11 / 1
Регистрация: 02.05.2009
Сообщений: 29
02.05.2009, 16:19  [ТС] 5
большое спасибо вам, Puporev!
0
0 / 0 / 0
Регистрация: 30.05.2009
Сообщений: 6
30.05.2009, 13:50 6
Puporev подскажи пожалуйста как изменить процедуру обмена чтобы матрица вида
1 2 3
4 5 6
7 8 9

стало такой
1 4 7
2 5 8
3 6 9

т.е строка поменялась местами со столбцом
0
Почетный модератор
64302 / 47597 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.05.2009, 13:53 7
Это называется транспонирование матрицы.
Если в новую матрицу то так.
for i:=1 to n do
for j:=1 to n do
b[i,j]:=a[j,i];
1
0 / 0 / 0
Регистрация: 30.05.2009
Сообщений: 6
30.05.2009, 15:19 8
Цитата Сообщение от Puporev Посмотреть сообщение
Это называется транспонирование матрицы.
Если в новую матрицу то так.
for i:=1 to n do
for j:=1 to n do
b[i,j]:=a[j,i];
спасибо большое х) вот я нуб ведь все так просто.
А можно еще вопросик? Вот есть допустим код на формирование матрицы
Pascal
1
2
3
4
5
6
7
8
9
10
     writeln('ucxogHa9I maTpuLLa:');
      For i:=1 to 5 do
       begin
        For j:=1 to 5 do
        begin
        m[i, j]:=Random(9)+1;
        Write(m[i, j]:3);
       end;
       writeln;
     end;
как узнать её макс и минимальный элемент? Заранее большое спасибо
0
Почетный модератор
64302 / 47597 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.05.2009, 16:17 9
Pascal
1
2
3
4
5
6
7
mx:=m[1];mn:=m[1];
for i:=1 to n do
for j:=1 to n do
 begin
  if m[i,j]>mx then mx:=a[i,j];
  if a[i,j]<mn then mn:=a[i,j];
 end;
1
0 / 0 / 0
Регистрация: 30.05.2009
Сообщений: 6
30.05.2009, 16:40 10
Цитата Сообщение от Puporev Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
mx:=m[1];mn:=m[1];
for i:=1 to n do
for j:=1 to n do
 begin
  if m[i,j]>mx then mx:=a[i,j];
  if a[i,j]<mn then mn:=a[i,j];
 end;
немного поправлю тебя
Pascal
1
2
3
4
5
6
7
mx:=m[1,1];mn:=m[1,1];
for i:=1 to n do
for j:=1 to n do
 begin
  if m[i,j]>mx then mx:=m[i,j];
  if m[i,j]<mn then mn:=m[i,j];
 end;
спасибо за помощь !
ну и еще как всегда вопросик х) у меня есть 3 матрицы, и вот все мин и макс элементы из 3 матриц, соответственно 6 числе нужно занести в отдельный одномерный массив how?
0
Почетный модератор
64302 / 47597 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.05.2009, 17:04 11
немного поправлю тебя
Да, прямо тут писал и не проверил.

Добавлено через 19 минут 59 секунд
у меня есть 3 матрицы, и вот все мин и макс элементы из 3 матриц, соответственно 6 числе нужно занести в отдельный одномерный массив how?
Что-то совсем видимо со знаниями глухо. Ну запишите так
нашли в первой матрице
v[1]:=mx;v[2]:=mn;
вторая матрица
v[3]:=mx;v[4]:=mn;
также третья. Если бы их было много, можно было бы организовать цикл, но из-за 3х не стоит.
1
0 / 0 / 0
Регистрация: 30.05.2009
Сообщений: 6
30.05.2009, 17:05 12
Цитата Сообщение от Puporev Посмотреть сообщение
Да, прямо тут писал и не проверил.
И как замутить сортировку первой и последней строки матрицы? В порядке убывания.
Сори что так завалил вопросами Х)
Да я только начал изучать паскаль так что извиняй что нуб такой х)
0
Почетный модератор
64302 / 47597 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.05.2009, 17:08 13
Создай новую тему и задавай там свои вопросы. Здесь закрыто.
0
30.05.2009, 17:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2009, 17:08
Помогаю со студенческими работами здесь

Отсортировать главную диагональ матрицы, вычислить ее сумму, поменять местами указанные строки
Пжл, кто может объяснить программу(расписать что означает каждая строчка). В массиве 10х10...

Поменять местами строки и столбцы в матрице.
Дана матрица размером 7x4. Переставляя её строки и столбцы, добейтесь того, чтобы наибольший...

Поменять местами строки и столбцы в матрице
Как в Python поменять строки и столбцы местами в матрице

В матрице поменять местами строки и столбцы
В данной действительной матрице размера n⨯m ( n≥3 , m≥3 ) поменять местами: а)строки с номерами 2...


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

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

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