Нарисуйте смежные круги со случайными радиусами - PullRequest
0 голосов
/ 17 марта 2020

Ну, мне нужно сгенерировать 10 случайных радиусов, а затем нарисовать круги. Но я не уверен, как рассчитать координату X, чтобы они были согласованными. Я получил этот код, но он не работает должным образом

uses graphabc;
var
a: array [1..10] of integer; 
i, x, y, r, rn: integer;
begin

i:=1;
while (i < 11) do begin
  rn:= random(5,50);
  a[i]:=rn;
  i:=i+1;
end;

r:=a[1];
y:=300;
x:=100;


for i:=1 to 10 do begin
  circle(x, y, r);
  r:=a[i];
  x:=x+r;
  end;
end.

1 Ответ

1 голос
/ 17 марта 2020

Чтобы два круга касались друг друга, расстояние между центрами должно быть суммой обоих радиусов. Простая коррекция (удалить if i > 1, если требуется смещение):

for i:=1 to 10 do begin
  r:=a[i];
  if i > 1 then
      x:=x+r;
  circle(x, y, r);
  x:=x+r;
  end;
end.
...