uses crt,graph;
var gr,gm,i:integer;
    scale_x,scale_y:integer;
    x,y,a:real;

function gx(x:real; sx:integer):integer;
begin
  gx:=trunc(sx*x)+(getmaxx div 2);
end;

function gy(y:real; sy:integer):integer;
begin
  gy:=(getmaxy div 2)-trunc(sy*y);
end;

procedure astr(t:real; var x,y:real);
begin
  y:=a*cos(t)*sqr(cos(t));
  x:=a*sin(t)*sqr(sin(t));
end;

var t, step: real;
begin
  clrscr;
  write('a = '); readln(a);
  gr := detect;
  initgraph(gr,gm, '');

  scale_x := 10; scale_y := 10;

  step := 0.005;
  t := 0;
  while t <= 2 * pi do begin
    astr(t, x, y);
    putpixel(gx(x, scale_x), gy(y, scale_y), blue);
    t := t + step;
  end;
  readkey;
  closegraph;
end.