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.