Задание такое….
Диаграмма все время крутиться.
По нажатию на стрелку(влево или вправо) минимальная часть диаграммы должна выезжать, при этом диаграмма также крутиться.
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 -