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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2011, 15:54   #1
Mambakremen
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 10
По умолчанию Рисую флаг Китая, проблема с процедурой

Флаг Китая


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

Код:
Program China;
uses crt,graph;
const
n=10;
r1=40;
r2=15;
alfa=2*pi/n;
type
point=record
x,y:integer;
end;
var p:array[1..n] of point;
i:byte;
x0,y0,r:integer;
dr,md:integer;
begin
dr:=detect;
initgraph(dr,md,'c:\tp\bgi');
setbkcolor(white);
setviewport(100,100,100,100,clipoff);
setfillstyle(1,red);
bar(0,0,450,250);
x0:=80;
y0:=80;
for i:=1 to n do begin
 if i mod 2 = 0 then r:=r2 else r:=r1;
p[i].x:=x0+round(r*cos((i-1)*alfa));
p[i].y:=y0+round(r*sin((i-1)*alfa));
end;
moveto(p[n].x,p[n].y);
for i:=1 to n do lineto(p[i].x,p[i].y);
setfillstyle(1,white);
floodfill(x0,y0,white);
readkey;
closegraph;
end.
Mambakremen вне форума Ответить с цитированием
Старый 21.05.2011, 17:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Интересная задачка. Практически фрактальная
Код:
uses crt,graph;
const
n=10;
r1=40;
r2=15;
alfa=2*pi/n;
type
point=record
x,y:integer;
end;
var p:array[1..n] of point;
i:byte;
x0,y0,r:integer;
dr,md:integer;


 procedure Star(x,y:integer;RadiusA:Integer);
 const radius:array[0..1] of integer=(5,2);
 var
  Knots:array[1..10] of PointType;
  angle:Double;i:integer;
 begin angle:=pi/2;
  for i:=1 to 10 do begin
   Knots[i].X:=Round(x+Radius[i mod 2]*RadiusA*cos(angle));
   Knots[i].Y:=Round(y+Radius[i mod 2]*RadiusA*sin(angle));
   angle:=angle+pi/5;
  end;
  DrawPoly(10,Knots);
 end;

 Procedure Stars(x,y:integer);
 Const Dist=100;
 Var Ang:Double;cx,cy,i:integer;
 begin
  Ang:=pi/30-1.5; cx:=x;cy:=y;
  for i:=1 to 5 do begin
   cx:=x+Round(Dist*Cos(ang));
   cy:=y+Round(Dist*Sin(ang));
   Star(cx,cy,5);
   ang:=ang+pi/4;
  end;
 end;

begin
dr:=detect;
initgraph(dr,md,'c:\tp\bgi');
setbkcolor(white);
setviewport(100,100,100,100,clipoff);
setfillstyle(1,red);
bar(0,0,450,250);
x0:=80;
y0:=80;
Star(100,100,10);Stars(200,100);

readkey;
closegraph;
end.
Поправь ее чуть, я в математике не силен
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с хранимой процедурой в Delphi Innnni Помощь студентам 0 01.05.2011 18:54
Проблема с дочерней процедурой reser Помощь студентам 5 10.08.2010 21:03
Проблема с процедурой Gettime erazer89 Паскаль, Turbo Pascal, PascalABC.NET 0 09.09.2009 17:57
Проблема с хранимой процедурой Lion-Tiger БД в Delphi 6 08.06.2009 13:32