Есть график - эпициклоида.
График я построил. Но его надо разукрасить. Т.е добавить фишечек. Или чтобы он "якобы разбивался на несколько N-частей" и каждая часть по особому закрашивалась. Или чтобы как-то ещё. На что будет фантазия.

program sd;
uses crt, graph;
Var gb, gm, x,y,a,b,q,p,k : integer;
   t,m : real;   
   n:boolean;
Const
 grPath='d:\BP\BGI';

Begin
gb := detect;
InitGraph(gb ,gm ,grPath);    {переход в графический режим}
t :=0;                        {установка начальных значений}
x:= 0;
y := 0;


SetTextStyle(0,HorizDir,0);        {определяет стиль и размер шрифта}
 OutTextXY(2,3, 'vvedite_a');       {вывод строки в графическом режиме}
  gotoXY(13,1);                     {перемещение курсора в данную точку}
  read(a);
OutTextXY(2,18, 'vvedite_b');
  gotoXY(13,2);
  read(b);
OutTextXY(2, 32,'vvedite_p');
   gotoXY(13,3);
   read(p);
OutTextXY(2,47,'vvedite_q');
   gotoXY(13,4);
   read(q);

{===============================}
{проверка первого случая в задании}
{b/a - положительное число }
  m:=b/a;                     {проверка, чтобы b/a было целым числом}
  k:=round(m);
if m-k=0 then  n:=true
 else n:=false;

if ((b/a)>0) and (n=true) and ((p/q)<>(b/a)) then
 begin
Repeat
Repeat
  t := t+pi/3500;
  x := round((a+b)*cos(t)-a*cos((a+b)*t/a));
  y := round((a+b)*sin(t)-a*sin((a+b)*t/a));
  Putpixel(340+x, 240+y, 5);
until t >= 2*pi;
   Until keypressed;
  end;

{===================================}
{случай второй}

if ((b/a)=(p/q)) then
  begin

Repeat
Repeat
  t := t+2*q*pi/3500;
  x := round((a+b)*cos(t)-a*cos((a+b)*t/a));
  y := round((a+b)*sin(t)-a*sin((a+b)*t/a));
  Putpixel(340+x, 240+y, 5);
   until t >= 2*pi;
   Until keypressed;
   closegraph;
  end;

{=======================================}
readln;
end.