Напишите программу,которая выводит на экран круговую диаграмму,отражающую товарооборот в % книж. магазина - 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, который запрашивает у пользователя товарооборот для каждой категории товаров и строит круговую диаграмму, отражающую процентное соотношение товарооборота по каждой категории.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д