IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Построение диаграммы
John
сообщение 31.05.2007 20:53
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Женя

Репутация: -  1  +


Привет. можете помочь, мне очень нужно (к завтрашнему дню)
Задание такое:
Разработать программу, выводящую круговую диаграмму(части диаграммы должны быть разных цветов) по любому количеству значений. Значения хранить в связном списке. Чтобы вращалась всегда(пока пользователь не остановит) вокруг центра. И на против или в ней (части диаграммы) должно выводиться значение соответствующее этой части

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


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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
volvo
сообщение 31.05.2007 21:14
Сообщение #2


Гость






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

Попробуй.
 К началу страницы 
+ Ответить 
John
сообщение 31.05.2007 21:58
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Женя

Репутация: -  1  +


Еще вопрос. Почему все делают на черном фоне, много видел и все на черном фоне. И еще можно на setvisualpage эти функции для чего они
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 31.05.2007 22:07
Сообщение #4


Гость






Я не предлагал тебе использовать SetVisualPage, с ним будет мерцать... А вообще это - работа с более чем одной видеостраницей (в одной изображение формируется, в это время другая отображается... Потом наоборот, показывается опять первая - формируется вторая...)
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 3:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"