Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2011, 21:47   #1
lexa26
 
Регистрация: 05.12.2010
Сообщений: 6
По умолчанию задача на двумерный массив

дана матрица размером n найдти максимальный элемент, меняя местами строки и столбци поместить этот элемент в левый верхний угол.
Помогите поменять местами строки и столбцы, вот исходный код:
Код:
var m:array[1..100,1..100] of integer;
i,j,max,n,im,jn:integer;
begin
writeln('vvedite razmer');
read(n);
for i:=1 to n do
for j:=1 to n do 
m[i,j]:=-9+random(20);
writeln;
end;
max:=m[1,1];
for i:=1 to n do
for j:=1 to n do
if m[i,j]>max then 
begin
max:=m[i,j];
im:=i;
jn:=j;
end;

{здесь надо поменять местами строки и столбци}

writeln(im,jn);
for i:=1 to n do
 begin
 for j:=1 to n do
 write(m[i,j],' ');
 writeln;
 end;
end.
lexa26 вне форума Ответить с цитированием
Старый 15.02.2011, 21:57   #2
XandrMoro
 
Регистрация: 15.02.2011
Сообщений: 7
По умолчанию

Там где у тебя место для меняния ставишь

Код:
 for i:= 1 to n do
  begin
   m[i,1]:= m[i,1] xor m[i,jn];
   m[i,jn]:= m[i,jn] xor m[i,1];
   m[i,1]:= m[i,1] xor m[i,jn];
   m[1,i]:= m[1,i] xor m[im,i];
   m[im,i]:= m[im,i] xor m[1,i];
   m[1,i]:= m[1,i] xor m[im,i];
  end;
XandrMoro вне форума Ответить с цитированием
Старый 15.02.2011, 23:07   #3
lexa26
 
Регистрация: 05.12.2010
Сообщений: 6
По умолчанию

что-то не работает
вот код:
Код:
var m:array[1..100,1..100] of integer;
i,j,max,n,im,jn:integer;
begin
writeln('vvedite razmer');
read(n);
for i:=1 to n do
 begin
 for j:=1 to n do 
 begin
 m[i,j]:=-9+random(20);
 write(m[i,j],' ');
 end;
 writeln;
 end;
max:=m[1,1];
for i:=1 to n do
for j:=1 to n do
if m[i,j]>max then 
begin
max:=m[i,j];
im:=i;
jn:=j;
end;
for i:= 1 to n do
  begin
   m[i,1]:= m[i,1] xor m[i,jn];
   m[i,jn]:= m[i,jn] xor m[i,1];
   m[i,1]:= m[i,1] xor m[i,jn];
   m[1,i]:= m[1,i] xor m[im,i];
   m[im,i]:= m[im,i] xor m[1,i];
   m[1,i]:= m[1,i] xor m[im,i];
  end;
writeln(im,jn);
for i:=1 to n do
 begin
 for j:=1 to n do
 write(m[i,j],' ');
 writeln;
 end;
end.
и результат:
lexa26 вне форума Ответить с цитированием
Старый 15.02.2011, 23:40   #4
XandrMoro
 
Регистрация: 15.02.2011
Сообщений: 7
По умолчанию

Извиняюсь, не учёл, что может быть первая строка\столбец, ксорить в таком случае нельзя. Тогда делаем так:

Код:
for i:= 1 to n do
  begin
   a:= m[i,1];
   m[i,jn]:= m[i,1];
   m[i,1]:= a;
   a:= m[1,i];
   m[im,i]:= m[1,i];
   m[1,i]:= a;
  end;
Должно быть всё в порядке.

Последний раз редактировалось XandrMoro; 16.02.2011 в 12:29.
XandrMoro вне форума Ответить с цитированием
Старый 15.02.2011, 23:45   #5
Shift_sk
Форумчанин
 
Регистрация: 20.11.2010
Сообщений: 221
По умолчанию

Код:
var m:array[1..100,1..100] of integer;
i,j,max,n,im,jn,c:integer;
begin
writeln('vvedite razmer');
read(n);
for i:=1 to n do
for j:=1 to n do 
m[i,j]:=-9+random(20);
for i:=1 to n do
 begin
 for j:=1 to n do
 write(m[i,j],' ');
 writeln;
 end;

max:=m[1,1];
for i:=1 to n do
for j:=1 to n do
if m[i,j]>max then 
begin
max:=m[i,j];
im:=i;
jn:=j;
end;

{здесь надо поменять местами строки и столбци}

writeln(im,jn);
for i:=1 to n do  begin
c:=m[1,i];
m[1,i]:=m[im,i];
m[im,i]:=c;
end;
for i:=1 to n do  begin
c:=m[1,i];
m[1,i]:=m[1,jn];
m[1,jn]:=c;
end;

for i:=1 to n do
 begin
 for j:=1 to n do
 write(m[i,j],' ');
 writeln;
 end;
end.
www.bezperepl.at.ua
Код:
...
Shift_sk вне форума Ответить с цитированием
Старый 16.02.2011, 00:14   #6
lexa26
 
Регистрация: 05.12.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от XandrMoro Посмотреть сообщение
Извиняюсь, не учёл, что может быть первая строка\столбец, ксорить в таком случае нельзя. Тогда делаем так:

Код:
for i:= 1 to n do
  begin
   a:= m[i,1];
   m[i,jn]:= [i,1];
   m[i,1]:= a;
   a:= m[1,i];
   m[im,i]:= m[1,i];
   m[1,i]:= a;
  end;
Должно быть всё в порядке.
печалька:
lexa26 вне форума Ответить с цитированием
Старый 16.02.2011, 12:42   #7
XandrMoro
 
Регистрация: 15.02.2011
Сообщений: 7
По умолчанию

Извиняюсь ещё раз, поленился проверить. Естественно оно не будет работать, у меня идентификаторы не те стоят) Проверил, у меня работает...

Код:
for i:= 1 to n do
  begin
   c:= m[i,jn];
   m[i,jn]:= m[i,1];
   m[i,1]:= c;
  end;
for i:= 1 to n do
  begin
   c:= m[im,i];
   m[im,i]:= m[1,i];
   m[1,i]:= c;
  end;
XandrMoro вне форума Ответить с цитированием
Старый 16.02.2011, 18:09   #8
lexa26
 
Регистрация: 05.12.2010
Сообщений: 6
По умолчанию

Всё работает, спс
lexa26 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MV C++.Задача на двумерный массив Lanka1 Помощь студентам 7 13.02.2011 15:59
задача на двумерный массив ArchiS Помощь студентам 7 20.12.2010 22:54
Задача на двумерный массив [Gunpowder M.D.] Помощь студентам 1 18.10.2010 01:48
Двумерный массив(1 задача) MyaSnIKs Помощь студентам 4 28.03.2009 15:32