Люди помогите пожалуйста, если я не сделаю это задание к этой пятнице, то меня могут выгнать из института.
Задание такое….
Диаграмма все время крутиться.
По нажатию на стрелку(влево или вправо) минимальная часть диаграммы должна выезжать, при этом диаграмма также крутиться.
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.
Чего никто не знает?
Помогите пожалуйста
Иначе мне будет
Давай я тебе покажу, как сделать крутящийся сегмент, уже выдвинутый из диаграммы, а отлов нажатия клавиши, и установку какого-нибудь флажка ты сделаешь сам? Смотри:
...
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;
...
Спасибо Volvo спасибо...
Очень благодарен..
Спас мне жизнь..