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

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

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

 
 Ответить  Открыть новую тему 
> Отсоединение части диаграммы, Нужно отсоединить минимальный элемент
сообщение
Сообщение #1


Пионер
**

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

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


Люди помогите пожалуйста, если я не сделаю это задание к этой пятнице, то меня могут выгнать из института.
Задание такое….
Диаграмма все время крутиться.
По нажатию на стрелку(влево или вправо) минимальная часть диаграммы должна выезжать, при этом диаграмма также крутиться.


program diagram;
uses
crt,graph;
var
rt:string;
z,x1,y1,cd,cg:integer;
ch:char;
lm:integer;
s:string[4];
k,kol,sum,x,y,i,j:integer;
mas,mas1:array[0..15] of integer;
color: array [1..15] of byte;
begin
clrscr;
mas[0]:=0;
mas1[0]:=0;
write('kolvo = ');
readln(kol);
for j:=1 to kol do
begin
write(j,' = ');
readln(mas[j]);
sum:=sum+mas[j];
end;

for j:=1 to kol do
for i:=j to kol do {упорядочивание массива}
begin
if mas[i]<mas[j] then
begin
z:=mas[i];
mas[i]:=mas[j];
mas[j]:=z;
end;
end;

for j:=1 to kol do
mas1[j]:=round(mas[j]*360/sum + mas1[j-1]) ;

randomize;
for j:=1 to kol do
color[j]:=random(15);

cd:=0;
cg:=detect;
initgraph(cd,cg,'d:\bp\BGI');

x:=300;y:=220;
lm:=0;
while keypressed=false do begin
for j:=1 to kol do begin
setfillstyle(1,color[j]);
if (mas1[j]+lm >= 360) and (mas1[j-1]+lm < 360) then begin
pieslice(300,220,mas1[j-1]+lm,360, 50);
pieslice(300,220,1,mas1[j]+lm-360, 50);
end
else
pieslice(300,220,mas1[j-1]+lm,mas1[j]+lm, 50);
x1:=round(cos(((2*lm+mas1[j]+mas1[j-1]) div 2)*3.14/180)*30+300);
y1:=round(sin(((2*lm+mas1[j]+mas1[j-1]) div 2)*3.14/180)*(-30)+220);
str(mas[j],s);
outtextxy(x1,y1,s);
delay(500);
end;
LM:=LM+1;
if lm>=359 then lm:=0;
end;
readln;
end.



Вот сама диаграмма уже крутиться все работает, надо сделать только это задание...
Заранее СПАСИБО!!!

Сообщение отредактировано: John -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер
**

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

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


Чего никто не знает? blink.gif
Помогите пожалуйста yes2.gif
Иначе мне будет mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Давай я тебе покажу, как сделать крутящийся сегмент, уже выдвинутый из диаграммы, а отлов нажатия клавиши, и установку какого-нибудь флажка ты сделаешь сам? Смотри:

...
lm:=0;
while keypressed=false do begin
for j := 1 to kol do begin
if j = 1 then begin

setfillstyle(solidfill, black);
setcolor(black);
if (mas1[j]+lm >= 360) and (mas1[j-1]+lm < 360) then begin
pieslice(x,y,mas1[j-1]+lm,360, 70);
pieslice(x,y,1,mas1[j]+lm-360, 70);
end
else
pieslice(x,y,mas1[j-1]+lm,mas1[j]+lm, 70);

x := x + trunc(20*cos((lm+mas1[j]/2)*Pi/180));
y := y - trunc(20*sin((lm+mas1[j]/2)*Pi/180));
end
else begin
x := 300; y := 220;
end;

setfillstyle(1,color[j]);
setcolor(white);

if (mas1[j]+lm >= 360) and (mas1[j-1]+lm < 360) then begin
pieslice(x,y,mas1[j-1]+lm,360, 50);
pieslice(x,y,1,mas1[j]+lm-360, 50);
end
else
pieslice(x,y,mas1[j-1]+lm,mas1[j]+lm, 50);

x1:=round(cos(((2*lm+mas1[j]+mas1[j-1]) div 2)*3.14/180)*30+x);
y1:=round(sin(((2*lm+mas1[j]+mas1[j-1]) div 2)*3.14/180)*(-30)+y);
str(mas[j],s);
outtextxy(x1,y1,s);
end;
delay(45); { <--- поставь сколько нужно, я проверял на FPC - поэтому поменял... }
LM:=LM+1;
if lm>=359 then lm:=0;
end;
...


 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

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

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


Спасибо Volvo спасибо...
Очень благодарен..
Спас мне жизнь..

Сообщение отредактировано: John -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 28.03.2024 15:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name