Помощь - Поиск - Пользователи - Календарь
Полная версия: Построение диаграммы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
John
Привет. можете помочь, мне очень нужно (к завтрашнему дню)
Задание такое:
Разработать программу, выводящую круговую диаграмму(части диаграммы должны быть разных цветов) по любому количеству значений. Значения хранить в связном списке. Чтобы вращалась всегда(пока пользователь не остановит) вокруг центра. И на против или в ней (части диаграммы) должно выводиться значение соответствующее этой части

Вот я тут кое-что написал: (но не крутиться, и значения не выводит)


program diagram;
uses
crt,graph;
type
kol=^chislo;
chislo=record
ch: integer;
color:integer;
next: kol;
end;
var
cd,cg:integer;
s:string[4];
n,sum,x,y,i,j:integer;
mas,beg,t: kol;
begin
cd:=0;
cg:=detect;
initgraph(cd,cg,'d:\bp\bgi');
setbkcolor(lightgray);
settextstyle(2,0,4);
outtextxy(10,y,'Введите количество чисел');
readln(i);
str(i,s);
outtextxy(170,y,s);
y:=8;
sum:=0;
for j:=1 to i do begin
new(mas);
outtextxy(10,y,'Введите число');
str(j,s);
outtextxy(textwidth('Введите число')+20,y, s);
readln(mas^.ch);
str(mas^.ch,s);
outtextxy(textwidth('Введите число')+30, y, '='+s);
sum:=sum+mas^.ch;
mas^.next:=nil;
if beg=nil then beg:=mas
else begin t:=beg;
while t^.next<>nil do
t:=t^.next;
t^.next:=mas;end;
delay(40000);
setfillstyle(1,0);
bar(0,0,200,30);
end;

t:=beg;
while t<>nil do begin {процент от общей суммы значений}
t^.ch:=round(t^.ch*360/sum);
t:=t^.next;
end;



randomize;
t:=beg; x:=0;
while t<>nil do begin {вывод частей диаграммы(с цветом не вышло)}
randomize;
n:=random(15);
setfillstyle(1,n);
pieslice(300,220,t^.ch,x, 200);
x:=t^.ch;
readkey;
t:=t^.next;
end;

readkey;
dispose(mas);
readln;
end.

volvo
Ты знаешь, мне пришла в голову сумасшедшая идея... Вот тут:
Проблемы с заливкой я сделал крутящийся барабан "Поля Чудес"... Если немного поменять программу, то будет отображаться вращающаяся круговая диаграмма...

Попробуй.
John
Еще вопрос. Почему все делают на черном фоне, много видел и все на черном фоне. И еще можно на setvisualpage эти функции для чего они
volvo
Я не предлагал тебе использовать SetVisualPage, с ним будет мерцать... А вообще это - работа с более чем одной видеостраницей (в одной изображение формируется, в это время другая отображается... Потом наоборот, показывается опять первая - формируется вторая...)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.