7. Для примера 6.8 выполните перечисленные задания.
1. Измените программу так, чтобы при построении диаграммы использовалась не вся высота окна, а оставались поля сверху и снизу.
При построении прямоугольников будем уменьшат координату y1
на 100 пикселей, а координату y2
увеличивать на 100.
uses graphABC;
var a: array[1..20] of integer;
n, max, h, x, y1, y2: integer;
m: real;
begin
write('Количество n =');
readln(n);
writeln(n);
writeln('Элементы массива');
for var i := 1 to n do
begin
read(a[i]);
write(a[i], ' ');
end;
max := a[1];
for var i := 2 to n do
if a[i] > max then
max := a[i];
h := trunc(WindowWidth/(2*n+1));
m := WindowHeight/max;
x := h;
for var i := 1 to n do
begin
SetBrushColor(clrandom);
y1 := WindowHeight;
y2 := y1 - trunc(a[i]*m);
Rectangle(x, y1-100, x+h, y2+100);
x := x + 2*h;
end;
end.
2. Измените программу так, чтобы столбики строились без промежутков между ними.
Заменим выражение x := x + 2*h
на x := x + h
.
uses graphABC;
var a: array[1..20] of integer;
n, max, h, x, y1, y2: integer;
m: real;
begin
write('Количество n =');
readln(n);
writeln(n);
writeln('Элементы массива');
for var i := 1 to n do
begin
read(a[i]);
write(a[i], ' ');
end;
max := a[1];
for var i := 2 to n do
if a[i] > max then
max := a[i];
h := trunc(WindowWidth/(2*n+1));
m := WindowHeight/max;
x := h;
for var i := 1 to n do
begin
SetBrushColor(clrandom);
y1 := WindowHeight;
y2 := y1 - trunc(a[i]*m);
Rectangle(x, y1, x+h, y2);
x := x + h;
end;
end.
3. Создайте массив цветовых констант и используйте эти цвета для закрашивания столбиков.
Объявим массив цветовых констант c
, который будет содержать 3 цвета. Затем при выборе цвета из этого массива будем использовать выражение c[i mod 3 + 1]
— это позволит выбирать цвета по порядку из массива «по кругу» при любом значении i
.
uses graphABC;
var a: array[1..20] of integer;
n, max, h, x, y1, y2: integer;
m: real;
const c: array [1..3] of Color = (clBlue, clRed, clYellow);
begin
write('Количество n =');
readln(n);
writeln(n);
writeln('Элементы массива');
for var i := 1 to n do
begin
read(a[i]);
write(a[i], ' ');
end;
max := a[1];
for var i := 2 to n do
if a[i] > max then
max := a[i];
h := trunc(WindowWidth/(2*n+1));
m := WindowHeight/max;
x := h;
for var i := 1 to n do
begin
SetBrushColor(c[i mod 3 + 1]);
y1 := WindowHeight;
y2 := y1 - trunc(a[i]*m);
Rectangle(x, y1, x+h, y2);
x := x + 2*h;
end;
end.
4. Постройте линейчатую диаграмму.
uses graphABC;
var a: array[1..20] of integer;
n, max, h, x, y1, y2: integer;
m: real;
begin
write('Количество n =');
readln(n);
writeln(n);
writeln('Элементы массива');
for var i := 1 to n do
begin
read(a[i]);
write(a[i], ' ');
end;
max := a[1];
for var i := 2 to n do
if a[i] > max then
max := a[i];
h := trunc(WindowHeight/(2*n+1));
m := WindowWidth/max;
x := h;
for var i := 1 to n do
begin
SetBrushColor(clrandom);
y1 := WindowWidth;
y2 := y1 - trunc(a[i]*m);
Rectangle(y1, x, y2, x+h);
x := x + 2*h;
end;
end.