Тема: Графика
Показать сообщение отдельно
Старый 28.04.2012, 11:17   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Ver4ik Посмотреть сообщение
16. Составить программу построения изображения n квадратов: квадраты вписаны друг в друга так, что вершины внутреннего квадрата находятся в серединах сторон внешнего
Поскольку Вы не сочли нужным указать, в какой из разновидностей Паскаля: Turbo-Free-Borland или ABC должна быть решена задача (а для графики это принципиальный вопрос), то право выбора я оставляю за собой и представляю решение в DOS Free Pascal:
Код:
Uses
 CRT, Graph;
Const
 N=10;
VAR
 Xold,Yold,Xnew,Ynew:Array[1..5] of Word;
 i,j:Byte;
Begin
 InitGraph(...); {параметры процедуры инициализации задайте сами}
 ClearDevice;
 Ynew[1]:=0;
 Ynew[2]:=0;
 Ynew[3]:=GetMaxY;
 Ynew[4]:=GetMaxY;
 Ynew[5]:=0;
 Xnew[1]:=(GetMaxX div 2)-(GetMaxY div 2);
 Xnew[2]:=(GetMaxX div 2)+(GetMaxY div 2);
 Xnew[3]:=(GetMaxX div 2)+(GetMaxY div 2);
 Xnew[4]:=(GetMaxX div 2)-(GetMaxY div 2);
 Xnew[5]:=(GetMaxX div 2)-(GetMaxY div 2);
 For i:=1 to N do
  begin
   for j:=1 to 4 do
    Line(Xnew[j],Ynew[j],Xnew[j+1],Ynew[j+1]);
   Xold:=Xnew;
   Yold:=Ynew;
   for j:=1 to 4 do
    begin
     Xnew[j]:=(Xold[j]+Xold[j+1]) div 2;
     Ynew[j]:=(Yold[j]+Yold[j+1]) div 2;
    end;
   Xnew[5]:=Xnew[1];
   Ynew[5]:=Ynew[1];
  end;
 Readkey;
 CloseGraph;
End.
Изображения
 
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070