Построить круговую диаграмму, отображающую процентное соотношение отличников - Turbo Pascal
Формулировка задачи:
Помогите, пожалуйста, составить программу!!!
Построить круговую диаграмму, отображающую процентное соотношение отличников, хорошистов и прочих. Для заливки секторов использовать различные шаблоны и цвета.
СПАСИБО!!!
Подскажите, как строить диаграмму?
Решение задачи: «Построить круговую диаграмму, отображающую процентное соотношение отличников»
textual
Листинг программы
uses crt,graph; const n=4; {массив названий} kt:array[1..n] of string=('Otlicniki','Horoshisty','Uspevayushie', 'Neuspevayushie'); var z:array [1..n] of integer; {Задаём массив} i,x,y,x1,y1,r,a,b,s:integer; st:string; begin clrscr; writeln('Vvedite kolichestvo po kategoriyam'); {Вывод на экран} for i:=1 to n do begin write(i,' ',kt[i],' '); readln(z[i]); end; initgraph(x,y,'');{Подключение графического режима} s:=0; for i:=1 to n do s:=s+z[i]; x:=getmaxX div 2; {Начало координат в центре экрана} y:=getmaxY div 2; r:=150; {Радиус окружности} b:=round(360*z[1]/s); {Рисуем круг} setcolor(9); setfillstyle(1,9); pieslice(x,y,0,b,r); str(100*z[1]/s:0:2,st); x1:=x+round(r*cos(pi*b/360));{середина сектора по внешней границе для Х} if x1>=x then x1:=x1+30{правее центра диаграммы} else x1:=x1-140;{левее} y1:=y-round(r*sin(pi*b/360));{по Y} if y1<x then y1:=y1-20{выше} else y1:=y1+20;{ниже} outtextXY(x1,y1,kt[1]+' '+ st+' %'); for i:=2 to n-1 do begin a:=round(360*z[i]/s)+b; setcolor(i); setfillstyle(1,i); pieslice(x,y,b,a,r); str(100*z[i]/s:0:2,st); x1:=x+round(r*cos(pi*(a+b)/360)); if x1>=x then x1:=x1+30 else x1:=x1-140; y1:=y-round(r*sin(pi*(a+b)/360)); if y1<x then y1:=y1-20 else y1:=y1+20; outtextXY(x1,y1,kt[i]+'='+st+'%'); b:=a; end; setcolor(n); setfillstyle(1,n); pieslice(x,y,b,360,r); str(100*z[n]/s:0:2,st); x1:=x+round(r*cos(pi*(360+b)/360)); if x1>=x then x1:=x1+30 else x1:=x1-140; y1:=y-round(r*sin(pi*(360+b)/360)); if y1<x then y1:=y1-20 else y1:=y1+20; outtextXY(x1,y1,kt[n]+' '+st+'%'); readln; end.
Объяснение кода листинга программы
- В начале кода подключаются необходимые библиотеки crt и graph.
- Затем определяется переменная n, которая представляет собой количество категорий.
- Создается массив kt, который содержит названия категорий.
- Создается переменная z, которая представляет собой сумму значений всех категорий.
- Инициализируется графический режим с помощью функции initgraph.
- Задаются начальные координаты x и y с помощью функции getmaxX и getmaxY.
- Задается радиус окружности с помощью переменной r.
- Вычисляется угол b для первой категории с помощью формулы b = round(360 * z[1] / s).
- Рисуется круг с помощью функции pieslice.
- Выводится процентное соотношение для первой категории с помощью функции outtextXY.
- Для каждой последующей категории вычисляется угол a с помощью формулы a = round(360 * z[i] / s) + b.
- Рисуется сектор круга с помощью функции pieslice.
- Выводится процентное соотношение для текущей категории с помощью функции outtextXY.
- Вычисляются координаты x1 и y1 для середины сектора с помощью формул x1 = x + round(r cos(pi b / 360)) и y1 = y - round(r sin(pi b / 360)).
- Если x1 больше или равно x, то x1 увеличивается на 30 единиц.
- Если y1 меньше или равно x, то y1 увеличивается на 20 единиц.
- Выводится процентное соотношение для последней категории с помощью функции outtextXY.
- Чтение ввода с клавиатуры прекращается с помощью функции readln.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д