Вопрос № 75080: Здравствуйте, уважаемые эксперты. Спасибо, что помогли мне с одной задачей, но вот вторая.....
На двух прозрачных листах бумаги в клетку размерами 20х20 нарисовано по одной фигуре, состоящей из закрашенных клеток. Составить программу, котора...
Вопрос № 75.080
Здравствуйте, уважаемые эксперты. Спасибо, что помогли мне с одной задачей, но вот вторая.....
На двух прозрачных листах бумаги в клетку размерами 20х20 нарисовано по одной фигуре, состоящей из закрашенных клеток. Составить программу, которая отвечает на вопрос: конгруентны ли эти фигуры?
var a,b:array[0..60,0..60]of boolean;//заведем двумерный массив True будет означать,что
клетка закрашена; поле будет располагаться в пределе от 40 до 60 для того чтобы при
сравнивании не выйти за пределы массива
mx1,mx2,my1,my2,x,y,i,j,n:longint;
begin
readln(n);// количество закрашенных клеток на каждом из листов
for i:=1 to n do begin
readln(x,y);
inc(x,20);inc(y,20);
if x>mx1 then mx1:=x;//попутно находим координаты максисально закрашиваемого угла на 1 листе
if y>my1 then my1:=y;
a[x,y]:=true;
end;
readln;// числа разделены пробелом
for i:=1 to n do begin
readln(x,y);
inc(x,20);inc(y,20);
if x>mx2 then mx2:=x;//попутно находим координаты максисально закрашиваемого угла на 2 листе
if y>my2 then my2:=y;
b[x,y]:=true;
end;
x:=mx1-mx2;y:=my1-my2;//Вот на эту разность рисунок на 2 листе будет смещен относительно 1
for i:=20 to 40 do begin
for j:=20 to 40 do begin
if not (a[i,j]=b[i-x,j-y]) then //ну и теперь сравниваем
begin writeln('No');exit;end;//если фигуры отличаются хотя бы одной клеткой, то они не равны
end;
end;
writeln('Yes');//если все клетки равны, выводим "Yes", иначе программа вышла бы раньше с "No"
end.
Программа без комментариев находится в приложении.<br>
<font color=#113399 face=Arial style=""font-size:14pt">" Удачи!</font>
Приложение:
--------- Все получится!
Ответ отправил: Bingo (статус: 1-ый класс)
Ответ отправлен: 11.02.2007, 20:22 Оценка за ответ: 5 Комментарий оценки: Очень большое спасибо, Вы меня прямо от смерти спасли