Восьми угольная звезда вписанная в окружность - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите пожалуйста с программой. Необходимо нарисовать восьми угольную звезду по принципу безотрывных линий вписанную в окружность. Каждую из полученных фигур закрасить разными цветами.

Решение задачи: «Восьми угольная звезда вписанная в окружность»

textual
Листинг программы
uses graph;
var gd,gm,xc,yc,r,i:integer;
    p,p1:array[1..8] of pointtype;
    a:real;
begin
gd:=0;
initgraph(gd,gm,'');
xc:=getmaxX div 2;
yc:=getmaxY div 2;
r:=100;
a:=0;
for i:=1 to 8 do
 begin
  p[i].x:=xc+round(r*cos(a));
  p[i].y:=yc-round(r*sin(a));
  a:=a+pi/4;
 end;
setfillstyle(1,14);
bar(xc-r-20,yc-r-20,xc+r+20,yc+r+20);
Setlinestyle(0,0,3);
setfillstyle(1,10);
Setcolor(10);
Circle(xc,yc,r);
floodfill(xc,yc,10);
Setcolor(2);
Circle(xc,yc,r);
SetColor(13);
Moveto(p[1].x,p[1].y);
LineTo(p[4].x,p[4].y);
LineTo(p[7].x,p[7].y);
LineTo(p[2].x,p[2].y);
LineTo(p[5].x,p[5].y);
LineTo(p[8].x,p[8].y);
LineTo(p[3].x,p[3].y);
LineTo(p[6].x,p[6].y);
LineTo(p[1].x,p[1].y);
setfillstyle(1,13);
floodfill(xc,yc,13);
r:=40;
a:=pi/8;
for i:=1 to 8 do
 begin
  p1[i].x:=xc+round(r*cos(a));
  p1[i].y:=yc-round(r*sin(a));
  a:=a+pi/4;
  floodfill(p1[i].x,p1[i].y,13);
 end;
r:=50;
a:=pi/4;
for i:=1 to 8 do
 begin
  p1[i].x:=xc+round(r*cos(a));
  p1[i].y:=yc-round(r*sin(a));
  a:=a+pi/4;
  floodfill(p1[i].x,p1[i].y,13);
 end;
SetColor(12);
Moveto(p[1].x,p[1].y);
LineTo(p[4].x,p[4].y);
LineTo(p[7].x,p[7].y);
LineTo(p[2].x,p[2].y);
LineTo(p[5].x,p[5].y);
LineTo(p[8].x,p[8].y);
LineTo(p[3].x,p[3].y);
LineTo(p[6].x,p[6].y);
LineTo(p[1].x,p[1].y);
readln
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы