Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Действия над двумерными Массивами

Автор: Аристократ 13.06.2007 11:29

Ребята, выручайте. Я понимаю, что уже не раз обращался к вам... Но завтра я мне надо сделать еще две проги и навсегда распрощаться м Паскалем. Может быть эти программы уже есть у кого-нибудь... Или есть похожие программы. Умоляю вас прикрепите их сюда. А может кто-нибудь знает как их написать. В них условий много и просто голова кругом идет....

Даны мозаичные изображения замочной скважины и ключа. Пройдет ли ключ в скважину? То есть даны матрицы K(m1,n1) и L(m2,n2) , m1>m2, n1>n2, состоящие из нулей и единиц. Проверить можно ли наложить матрицу L на матрицу K (разрешается сдвиг, поворот на угол, кратный 900 , и зеркальное отображение) так, чтобы каждой единице матрицы L соответствовал нуль в матрице K, и если можно, то как (на сколько и в каком направлении следует подвинуть, повернуть и/или зеркально отобразить матрицу L по отношению к матрице K до выполнения условия)?

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

Автор: Lapp 13.06.2007 15:38

М
Название крайне неинформативно. Будь добр, измени.


Автор: мисс_граффити 13.06.2007 16:03

про ключи...
тебе нужна процедура транспонирования и сложения, например. это есть в FAQ
повернул матрицу, сложил. прошелся по ней - если все эл-ты равны 1, все ок. если нет - повернул еще раз.

Автор: Аристократ 13.06.2007 16:18

транспонировать я вроде умею, у меня есть сделанная прога(это предыдущее задание из контрольной). складывать вроде умею. Но суметь это все применить и связать мне не под силу. Помогите пожалуйста.
Над сложением сейчвас подумаю.
Вот транспонирование.


Uses crt;
Const row=3; col=row;
Var a: array [1..row,1..col] of Integer;
I,j,buf: integer;
Begin
Randomize;
Writeln('MATRICA');
For i:=1 to row do
begin
for j:=1 to col do
begin
a[i,j]:=random(100);
write(a[i,j]:4);
end;
writeln;
end;
{transpon главной диагонали}
for i:=1 to row do
for j:=i+1 to col do
begin
buf:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=buf;
end;
writeln('trans');
for i:=1 to row do
begin
for j:=1 to col do write(a[i,j]:4);
writeln;
end;

for i := 1 to row - 1 do
for j := 1 to row - i do begin
buf:=a[i,j]; a[i,j]:=a[row-j+1,row-i+1]; a[row-j+1,row-i+1]:=buf;
end;
for i:=1 to row do
for j:=i+1 to col do
begin
buf:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=buf;
end;
writeln('trans');
for i:=1 to row do
begin
for j:=1 to col do write(a[i,j]:4);
writeln;
end;
readln;
{транспонирования относительно побочной диагонали.}
for i:=1 to row do
for j:=i+1 to col do
begin
if a[i,j] <> a[j,i] then
begin
end;
end;
for i:=1 to row do
begin
for j:=1 to col do write(a[i,j]:4);
writeln;
end;
readln;
end.



Автор: Аристократ 13.06.2007 20:08

Ребята, ну помогите пожалуйста, мне их уже через 12 часов сдавать. А я сам не могу...

Автор: мисс_граффити 13.06.2007 20:09

а в чем проблема-то? раз транспонировать ты умеешь... транспонировал - сложил - проверил. транспонировал еще раз...

Автор: Аристократ 13.06.2007 21:17

Ну вот сложение матриц. Я вашу мысль понял, постараюсь реализовать. Если можно можете дать ссылки ПРОЦЕДУР транспонирования относительно главной и побочной диагонали и сложения. Буду очень признателен. А кто-нибудь знает что-нибудь по второй задаче??? З.Ы тоже очень надо

 
for i:=1 to m do
for j:=1 to m do
c[i,j]:=a[i,j]+b[i,j];
for i:=1 to m do
begin
for j:=1 to m do
write(c[i,j]:7:2);
writeln;
end;
readln;