Напишите программу,которая выводит на экран круговую диаграмму,отражающую товарооборот в % книж. магазина - Pascal
Формулировка задачи:
Ребят помогите исправить ошибки!
//
program diagram;
uses crt;
const
x:array[1..4] of string=('Knigi','Zurnaly','Kanctovary','Proctee');
var dr,mode,i,xc,yc,r,detect,initgraph:integer;
y:array[1..4] of real;
s:real;
a,b:longint;
st:string;
begin
clrscr;
s:=0;
writeln('Vvedite tovarooborot po vidam:');
for i:=1 to 4 do
begin
write(x[i],'=');
readln(y[i]);
s:=s+y[i];
end;
for i:=1 to 4 do
y[i]:=y[i]*100/s;
dr:=detect;
initgraph(dr,mode,'');
xc:=GetMaxX div 2;
yc:=GetMaxY div 2;
outtextxy(Xc-80,20,'Tovarooborot po vidam, %');
b:=round(360*y[1]/100);
r:=150;
setcolor(10);
setfillstyle(1,11);
pieslice(xc,yc,0,b,r);
for i:=2 to 3 do
begin
a:=round(360*y[i]/100)+b;
setcolor(10+i);
setfillstyle(1,10+i);
pieslice(xc,yc,a,b,r);
b:=a;
end;
setcolor(14);
setfillstyle(1,14);
pieslice(xc,yc,b,360,r);
for i:=1 to 4 do
begin
setcolor(i+10);
setfillstyle(1,i+10);
bar(xc+150,i*40,xc+180,i*40+20);
setcolor(15);
str(y[i]:0:2,st);
outtextXY(xc+190,i*40+5,x[i]+'-'+st);
end;
readkey;
end.Решение задачи: «Напишите программу,которая выводит на экран круговую диаграмму,отражающую товарооборот в % книж. магазина»
textual
Листинг программы
program diagram;
uses graph,crt;
const
x:array[1..4] of string=('Knigi','Zurnaly','Kanctovary','Proctee');
var dr,mode,i,xc,yc,r,detect:integer;
y:array[1..4] of real;
s:real;
a,b:longint;
st:string;
begin
clrscr;
s:=0;
writeln('Vvedite tovarooborot po vidam:');
for i:=1 to 4 do
begin
write(x[i],'=');
readln(y[i]);
s:=s+y[i];
end;
for i:=1 to 4 do
y[i]:=y[i]*100/s;
dr:=detect;
initgraph(dr,mode,'');
xc:=GetMaxX div 2;
yc:=GetMaxY div 2;
outtextxy(Xc-80,20,'Tovarooborot po vidam, %');
b:=round(360*y[1]/100);
r:=150;
setcolor(10);
setfillstyle(1,11);
pieslice(xc,yc,0,b,r);
for i:=2 to 3 do
begin
a:=round(360*y[i]/100)+b;
setcolor(10+i);
setfillstyle(1,10+i);
pieslice(xc,yc,a,b,r);
b:=a;
end;
setcolor(14);
setfillstyle(1,14);
pieslice(xc,yc,b,360,r);
for i:=1 to 4 do
begin
setcolor(i+10);
setfillstyle(1,i+10);
bar(xc+150,i*40,xc+180,i*40+20);
setcolor(15);
str(y[i]:0:2,st);
outtextXY(xc+190,i*40+5,x[i]+'-'+st);
end;
readkey;
end.
Объяснение кода листинга программы
- Объявление и инициализация переменных:
x:array[1..4] of string=('Knigi','Zurnaly','Kanctovary','Proctee');- Создание массива строкxс названиями товаров.dr,mode,i,xc,yc,r,detect:integer;- Объявление целочисленных переменныхy:array[1..4] of real;- Создание массива вещественных чиселy.
- Ввод данных:
- Из пользовательского ввода получаем значения товарооборота для каждого вида товара и записываем в массив
y.
- Из пользовательского ввода получаем значения товарооборота для каждого вида товара и записываем в массив
- Инициализация графики:
dr:=detect; initgraph(dr,mode,'');- Инициализация графического режима для отображения круговой диаграммы.
- Отрисовка круговой диаграммы:
- Вычисление углов и радиуса для каждого сектора диаграммы на основе товарооборота и отрисовка секторов с помощью функции
pieslice.
- Вычисление углов и радиуса для каждого сектора диаграммы на основе товарооборота и отрисовка секторов с помощью функции
- Отображение легенды:
- Создание цветных баров и вывод соответствующих подписей с названием товара и его долей в общем товарообороте. Это программный код на языке Pascal, который запрашивает у пользователя товарооборот для каждой категории товаров и строит круговую диаграмму, отражающую процентное соотношение товарооборота по каждой категории.