Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 310
от 15.02.2007, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 236, Экспертов: 52
В номере:Вопросов: 1, Ответов: 1


Вопрос № 75080: Здравствуйте, уважаемые эксперты. Спасибо, что помогли мне с одной задачей, но вот вторая..... На двух прозрачных листах бумаги в клетку размерами 20х20 нарисовано по одной фигуре, состоящей из закрашенных клеток. Составить программу, котора...

Вопрос № 75.080
Здравствуйте, уважаемые эксперты. Спасибо, что помогли мне с одной задачей, но вот вторая.....

На двух прозрачных листах бумаги в клетку размерами 20х20 нарисовано по одной фигуре, состоящей из закрашенных клеток. Составить программу, которая отвечает на вопрос: конгруентны ли эти фигуры?
Отправлен: 10.02.2007, 14:40
Вопрос задал: Гусев Денис (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Bingo
<b>Здравствуйте, Гусев Денис!</b>

На мой взгляд, чтобы решить задачу, нужно найти на сколько клеток по вертикали и

горизонтали отличаются(смещены) фигуры и затем сравнить, закрашена ли каждая клетка,

учитывая сиещение.

********************************************************************************************

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
Комментарий оценки:
Очень большое спасибо, Вы меня прямо от смерти спасли


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.44 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное