Построить круговую диаграмму, отображающую процентное соотношение отличников - Turbo Pascal

  1. Помогите, пожалуйста, составить программу!!! Построить круговую диаграмму, отображающую процентное соотношение отличников, хорошистов и прочих. Для заливки секторов использовать различные шаблоны и цвета. СПАСИБО!!!Добавлено через 10 часов 40 минут Подскажите, как строить диаграмму?


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.


Похожие ответы
  1. Имеется литературный текст, например, на английском. Нужно вводить в программу слова текста через равные промежутки времени, (например, 0,1 секунды). Как задать генератор времени таких промежутков? (важно, чтобы именно в единицах времени). Можно задать повторяющийся цикл конечного вычисления: скажем, сложения или умножения натуральных чисел от 1 до N, где N – константа ( = 10, 100, 200,…, 1000). Цикл занимает, скажем, время t=0,01 сек. Задав 10 циклов, получим время 0,1 секунды. Но непонятно, как определить время цикла.

  1. Функция: y=cos(x) Диапазон:2;4 шаг:0,2

  1. помогите пожалуйста сделать график функции у=(корень х)+х2( х в квадрате)

  1. Заколдованный принц нашел 4 волшебных палочки, длины которых a,b,c и d. Чтобы расколдоваться, ему нужно из них построить «волшебный треугольник» с наибольшим периметром, а затем встать внутрь этого треугольника. Напишите программу, которая определяет, из каких конкретно волшебных палочек принц должен построить данный треугольник. Формат входных данных: С клавиатуры вводится четыре положительных числа через пробел- a,b,c и d, которые обозначают длины палочек. Формат выходных данных: На экран вывести длины палочек, из которых можно построить треугольник с максимальным периметром в алфавитном порядке перечисления их длин через пробел. Если ни одного треугольника построить нельзя, программа должна вывести слово «NO».

  1. Добрый вечер. Помогите с этой задачей, пожалуйста. По введенным числам a,b,c определить: можно ли построить треугольник и если можно, то какой( по сторонам): равнобедренный, разносторонний, равносторонний По углам: тупые, острые или прямые

  1. построить пирамиду, в основании которой лежит правильный десятиугольник. Фигура должна быть синего цвета и вращаться против часовой стрелки.

  1. Написать программу для решения следующей задачи. построить латинский квадрат,используя циклический сдвиг. Латинский квадрат-матрица размером N x N, элементы которой равны 1,2..N и каждое число встречается только один раз в каждой строке и каждом столбце. Это нужно через объекты делать) Заранее огромное человеческое спасибо!!!))

  1. Построить график функции

  1. Построить график функции

  1. Построить график функции