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

0 голосов

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


спросил от (15 баллов) в категории Информатика
1 Ответ
0 голосов
ответил от БОГ (314k баллов)
 
Лучший ответ

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.

оставил комментарий от Кандидат Наук (34.0k баллов)

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

оставил комментарий от Кандидат Наук (34.0k баллов)

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.

оставил комментарий от Кандидат Наук (34.0k баллов)

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

...