program diagramma_pryamougolnaya;
uses graph;
type {Каждый элемент диаграммы - запись с двумя полями}
zapis = record
data : word; {Поле данных}
txt : string {Поле текста}
end;
const k = 3; {Количество исходных данных и сами данные}
ishodn : array[1..k] of zapis = ((data : 135; txt : 'yuksi'),
(data : 57; txt : 'kaksi'),
(data : 13; txt : 'kolme'));
var
m : array[1..k] of zapis; {Массив отсортированных записей}
i, j, my : byte;
sum : word;
pp : zapis;
driver, regim, x, y, shag : integer;
s : string;
begin
writeln('Введите коэффициент уменьшения высоты гистогpаммы от 1 до 5');
readln(my);
sum := 0; {Используем сумму, чтобы показать долю элемента диаграммы}
for i := 1 to k do sum := sum + ishodn[i].data;
for i := 1 to k do {Переписываем исходные данные в буфер m}
begin
m[i].data := ishodn[i].data;
m[i].txt := ishodn[i].txt
end;
for i := 1 to k-1 do { Соpтиpуем данные буфера по убыванию }
for j := i to k do
if m[i].data < m[j].data then begin
pp := m[i];
m[i] := m[j];
m[j] := pp
end;
driver := 9; {Это VGA}
regim := 2;
InitGraph(driver, regim, 'c:\bp\bgi');
x := GetMaxX div 10; { Задаем начало гистогpаммы }
y := GetMaxY div 2+200;
shag := x;
SetColor(red);
OutTextXY(GetmaxX-150, 50, 'Press ENTER');
SetColor(green);
OutTextXY(GetMaxX-200, 100, 'Input data:');
i := 1;
repeat
SetFillStyle(1, i+1);
SetColor(i+1);
Bar3D(x, y – round(m[i].data*GetMaxY/sum/my), x+shag, y, 10, true);
Str(m[i].data, s); {Преобразование числовых данных в строку}
OutTextXY(GetMaxX-175, 115 + i*15, m[i].txt + ' - ' + s);
x := x + shag;
i := i + 1
until i > k;
readln;
CloseGraph;
end.
uses graph;
type {Каждый элемент диаграммы - запись с двумя полями}
zapis = record
data : word; {Поле данных}
txt : string {Поле текста}
end;
const k = 3; {Количество исходных данных и сами данные}
ishodn : array[1..k] of zapis = ((data : 135; txt : 'yuksi'),
(data : 57; txt : 'kaksi'),
(data : 13; txt : 'kolme'));
var
m : array[1..k] of zapis; {Массив отсортированных записей}
i, j, my : byte;
sum : word;
pp : zapis;
driver, regim, x, y, shag : integer;
s : string;
begin
writeln('Введите коэффициент уменьшения высоты гистогpаммы от 1 до 5');
readln(my);
sum := 0; {Используем сумму, чтобы показать долю элемента диаграммы}
for i := 1 to k do sum := sum + ishodn[i].data;
for i := 1 to k do {Переписываем исходные данные в буфер m}
begin
m[i].data := ishodn[i].data;
m[i].txt := ishodn[i].txt
end;
for i := 1 to k-1 do { Соpтиpуем данные буфера по убыванию }
for j := i to k do
if m[i].data < m[j].data then begin
pp := m[i];
m[i] := m[j];
m[j] := pp
end;
driver := 9; {Это VGA}
regim := 2;
InitGraph(driver, regim, 'c:\bp\bgi');
x := GetMaxX div 10; { Задаем начало гистогpаммы }
y := GetMaxY div 2+200;
shag := x;
SetColor(red);
OutTextXY(GetmaxX-150, 50, 'Press ENTER');
SetColor(green);
OutTextXY(GetMaxX-200, 100, 'Input data:');
i := 1;
repeat
SetFillStyle(1, i+1);
SetColor(i+1);
Bar3D(x, y – round(m[i].data*GetMaxY/sum/my), x+shag, y, 10, true);
Str(m[i].data, s); {Преобразование числовых данных в строку}
OutTextXY(GetMaxX-175, 115 + i*15, m[i].txt + ' - ' + s);
x := x + shag;
i := i + 1
until i > k;
readln;
CloseGraph;
end.
Комментариев нет:
Отправить комментарий