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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2011, 00:55   #1
stimsa
 
Регистрация: 06.03.2011
Сообщений: 4
Вопрос Рекурсивное разбиение прямоугольной области правильным n-угольником

Имеется алгоритмический язык.Помогите реализовать на паскале.
Код:
алг RectangleDraw(арг цел Current_It,int Count_It, арг вещ Radius, Xc, Yc, арг цел n)
нач
цел i;
если Current_It = Count_It то
Count1:= Count1+1;
если (Xc - Radius >= Xm и Xc + Radius <= XM и Yc - Radius >= Ym и Yc + Radius <=YM ) то
нц для i от 0 до n
Coord[i].x:=IX(Xc + Radius*cos(i*2*M_PI/n))
Coord[i].y:=IY(Yc + Radius*sin(i*2*M_PI/n))
кц
Coord[n]:=Coord[0]
Polygon(Coord,n+1)
все
иначе
нц для i от 0 до n
RectangleDraw (Current_It+1, Count_It, Radius/2., Xc+Radius/2. *cos(i*2*M_PI/n),Yc +Radius/2.*sin(i*2*M_PI/n),n)
 
RectangleDraw (Current_It+1,Count_It, Radius/2.,Xc, Yc, n)
кц
все
кон
 
алг RunProcess
нач
цел j, NumberG, IterNo, Xm, Ym, XM, YM;
 
вещ Radius, Xc, Yc;
Radius:= sqrt(pow(XM - Xm,2)+pow(YM - Ym,2))/2.;
Xc = Xm+(XM - Xm)/2.
Yc = Ym+(YM - Ym)/2.;
 
нц для j от 1 до IterNo
RectangleDraw(1,j,Radius,Xc,Yc, NumberG)
кц
кон
Iax=(double)(right - top -10)/(MaxX - MinX);
Ibx=(double)(right -5 - Iax*MaxX);
Iay=(double)(bottom - top -10)/(MinY - MaxY);
Iby=(double)(bottom -5 - Iay*MinY);
 
 
IX(double x) Iax*x+Ibx+0.5;
IY(double y) Iay*y+Iby+0.5
stimsa вне форума Ответить с цитированием
Старый 06.03.2011, 05:22   #2
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

Цитата:
Имеется алгоритмический язык.Помогите реализовать на паскале.
что вы имеете в виду?
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 06.03.2011, 10:19   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

алг procedure RectangleDraw
(арг цел Current_It :integer:integer,;int Count_It, арг вещ Radius:real,; Xc, Yc, арг цел n)

еслиif Current_It = Count_It то then begin

всеend
иначе else begin


нц дляfor i от:= 0 до to n begin|
Coord[i].x:=IX(Xc + Radius*cos(i*2*M_PI/n))
Coord[i].y:=IY(Yc + Radius*sin(i*2*M_PI/n))
кц
end

и and
и расставить скобки () в
если ( (Xc - Radius)>= Xm и Xc + Radius <= XM и Yc - Radius >= Ym и Yc + Radius <=YM ) то
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.03.2011 в 10:21.
evg_m на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с правильным выводом текста Bigtyoma Общие вопросы Delphi 1 08.11.2010 23:25
Рекурсивное зацикливание Alex_Almaty Помощь студентам 8 06.07.2010 07:49
Разбиение области на прямоугольные элементы Vitkov Помощь студентам 1 29.09.2008 22:48
Разбиение окна на области? HunterMan Win Api 2 03.04.2008 22:18