Построить гистограмму для заданных значений - PascalABC.NET
Формулировка задачи:
Столбчатая диаграмма (гистограмма) представляет собой набор прямоугольников, основания которых равны, а высоты пропорциональны числовым величинам, взятым из некоторой совокупности. Прямоугольники диаграммы обычно закрашивают в разные цвета. Даны семь действительных положительных чисел а1,…,а7. Построить гистограмму для этих значений.
Решение задачи: «Построить гистограмму для заданных значений»
textual
Листинг программы
uses graphABC;
const a:array[1..7] of real=(15.05,10.30,17.23,11.60,19.32,21.95,18.70);
var i,x0,y0,w:integer;
mx,h:real;
s:string;
c:Color;
begin
w:=20;{ширина столбцов}
x0:=50;{левый край диагоаммы}
y0:=windowheight-80;{нижний край}
mx:=a[1];
for i:=1 to 7 do
if a[i]>mx then mx:=a[i];{находим максимум}
h:=(y0-40)/mx;{масштаб по вертикали}
for i:=1 to 7 do
begin
c:=clRandom;{случайный цвет}
Pen.Color:=c;
Brush.Color:=c;
Brush.Style:=bsSolid;
{рисуем прямоугольники с заданной шириной, шагом
и высотой соответственно значению чисел в массиве}
rectangle(x0+4*w*(i-1),y0-round(a[i]*h),x0+w*(4*i-2),y0);
Brush.Style:=bsClear;
str(a[i]:5:2,s);{преобразуем числа в строку}
textout(x0+4*w*(i-1),y0-round(a[i]*h)-20,s);{выводим цену выше столбика}
end;
end.
Объяснение кода листинга программы
- Объявлены переменные: i, x0, y0, w, mx, h, s, c.
- Задаются значения переменных: w=20, x0=50, y0=windowheight-80, mx=a[1], h=(y0-40)/mx.
- Переменная mx обновляется, если встречается большее значение в массиве a.
- Для каждого элемента массива a рисуется прямоугольник с заданной шириной, шагом и высотой, соответствующей его значению.
- Цвет кисти и пера устанавливается в случайный цвет c.
- Brush.Style сбрасывается на bsClear после вывода текста.
- Строка s формируется из числа a[i] с точностью до 5 знаков после запятой и выводится на экран с помощью функции textout.
- Код выполняется для каждого элемента массива a.