Напишите программу,которая выводит на экран круговую диаграмму,отражающую товарооборот в % книж. магазина - 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.

Объяснение кода листинга программы

  1. Объявление и инициализация переменных:
    • 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.
  2. Ввод данных:
    • Из пользовательского ввода получаем значения товарооборота для каждого вида товара и записываем в массив y.
  3. Инициализация графики:
    • dr:=detect; initgraph(dr,mode,''); - Инициализация графического режима для отображения круговой диаграммы.
  4. Отрисовка круговой диаграммы:
    • Вычисление углов и радиуса для каждого сектора диаграммы на основе товарооборота и отрисовка секторов с помощью функции pieslice.
  5. Отображение легенды:
    • Создание цветных баров и вывод соответствующих подписей с названием товара и его долей в общем товарообороте. Это программный код на языке Pascal, который запрашивает у пользователя товарооборот для каждой категории товаров и строит круговую диаграмму, отражающую процентное соотношение товарооборота по каждой категории.

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы