5. Для задачи из примера 4.6 выполните перечисленные задания.
1. Внесите в программу изменения так, чтобы цвет сектора выбирался из массива констант.
Дополним программу массивом, который будет содержать элементы типа Color
. Затем в цикле при выборе цвета воспользуемся таким выражением: SetBrushColor(c[i])
.
uses graphABC;
var a: array[1..10] of integer;
n, S, u0, u1: integer;
const c: array[1..10] of Color = (clRed, clOrange,
clYellow, clLightGreen, clGreen,
clTeal, clBlue, clDarkViolet,
clMagenta, clPink);
begin
write('Количество n = ');
readln(n);
writeln(n);
writeln('Элементы массива');
for var i := 1 to n do
read(a[i]);
for var i := 1 to n do
write(a[i], ' ');
S := 0;
for var i := 1 to n do
S := S + a[i];
u0 := 0;
for var i := 1 to n do
begin
u1:= u0+trunc(a[i]*360/S);
SetBrushColor(c[i]);
Pie(150,150,100,u0,u1);
u0 := u1;
end;
end.
2*. Измените программу так, чтобы диаграмма всегда строилась в центре графического окна. Диаметр круга определяется меньшей из двух величин — шириной или высотой окна.
Для этого объявим три дополнительные переменные r
, x
, y
. Радиус круга — r
— получим из выражения WindowWidth div 2
или WindowHeight div 2
(определим, какое из них меньшее). WindowWidth
— это ширина графического окна, а WindowHeight
— его ширина. Таким образом, диаметр круга (r*2
) будет равняться меньшей стороне окна. Координаты центра находим также с помощью WindowWidth
и WindowHeight
.
uses graphABC;
var a: array[1..10] of integer;
n, S, u0, u1, r, x, y: integer;
const c: array[1..10] of Color = (clRed, clOrange,
clYellow, clLightGreen, clGreen,
clTeal, clBlue, clDarkViolet,
clMagenta, clPink);
begin
write('Количество n = ');
readln(n);
writeln(n);
writeln('Элементы массива');
for var i := 1 to n do
read(a[i]);
for var i := 1 to n do
write(a[i], ' ');
S := 0;
for var i := 1 to n do
S := S + a[i];
u0 := 0;
if WindowWidth > WindowHeight then
r := WindowHeight div 2
else
r := WindowWidth div 2;
x := WindowWidth div 2;
y := WindowHeight div 2;
for var i := 1 to n do
begin
u1:= u0+trunc(a[i]*360/S);
SetBrushColor(c[random(1, 10)]);
Pie(x,y,r,u0,u1);
u0 := u1;
end;
end.