Помогите написать программу в PASCAL Нарисовать радугу

0 голосов
151 просмотров

Помогите написать программу в PASCAL
Нарисовать радугу


Информатика (15 баллов) | 151 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Uses graphABC;
const
  c: array [1..7, 1..3] of byte = ((50, 50, 133), (0, 0, 255), (0, 160, 227), (0, 255, 0), (255, 255, 0), (239, 127, 26), (255, 0, 0));

var
  i: byte;

procedure ColArc(x, y: integer; r: integer; nc: byte);
begin
  SetPenColor(rgb(c[nc, 1], c[nc, 2], c[nc, 3]));
  Arc(x, y, r + 10, 0, 180);
  Arc(x, y, r - 10, 0, 180);
  line(x - r - 11, y - 2, x - r + 11, y - 2);
  line(x + r - 11, y - 2, x + r + 11, y - 2);
  floodfill(x, y - r, rgb(c[nc, 1], c[nc, 2], c[nc, 3]));
end;

begin
  setwindowsize(500, 300);
  for i := 1 to 7 do
    ColArc(250, 300, 100 + (i * 20), i);
end.

(314k баллов)
0

Не проще ли менять цвет кисти, вместо floodfill(x, y - r, rgb(c[nc, 1], c[nc, 2], c[nc, 3])); ?

0

uses graphABC;
const
c: array [0..7, 1..3] of byte = ((255, 255, 255), (50, 50, 133), (0, 0, 255), (0, 160, 227), (0, 255, 0), (255, 255, 0), (239, 127, 26), (255, 0, 0));

var
i: byte;

procedure ColArc(x, y: integer; r: integer; nc: byte);
begin
SetBrushColor(rgb(c[nc, 1], c[nc, 2], c[nc, 3]));
SetPenColor(rgb(c[nc, 1], c[nc, 2], c[nc, 3]));
FillPie(x, y, r + 10, 0, 180);
end;

begin
setwindowsize(500, 300);
for i := 7 downto 0 do
ColArc(250, 300, 100 + (i * 20), i);
end.

0

На три строчки меньше!)))