Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
{Џа®Ја ¬¬ ¤«п Ї®бв஥Ёп ЄагЈ®ўле ¤Ё Ја ¬¬}
Uses crt,Graph; {Ї®бв஥ЁҐ ЄагЄ®ў®© ¤Ё Ја ¬¬л}
const n = 12;
alfan = 0; {а §¬Ґа®бвм ¬ ббЁў § 票© дгЄжЁ©}
xn = 320; { з «мл© гЈ®« аЁб®ў Ёп ᥪ樨}
yn = 300; {Є®®а¤Ё вл жҐва ¤Ё Ја ¬¬л}
r = 150; {а ¤Ёгб ¤Ё Ја ¬¬л}
ns = 5; {Є-ў® Ї®§ЁжЁ© ў § ЇЁбЁ зЁб« ЇаЁ ўлў®¤Ґ ҐЈ® нЄа }
ms =2; {Є-ў® ў ¤а®Ў®© з бвЁ зЁб« ЇаЁ ўлў®¤Ґ ҐЈ® нЄа }
type m = array[1..n] of integer;
m1 = array[1..n] of real;
var f:m1; {¬ ббЁў § 票© дгЄжЁ©}
alfa:m; {¬ ббЁў § 票© гЈ«®ў}
driver,err,
k, {Є-ў® ᥪв®а®ў}
i, {Ї а ¬Ґва жЁЄ« }
bet, {жҐва «мл© гЈ®« б ᥪв®а }
y,x, {Є®®а¤Ё вл жҐва ¤гЈЁ ᥪв®а }
x1,y1:integer; {Є®®а¤Ё вл з «м®© в®зЄЁ Ї®«п ўлў®¤ ¤ЇЁбЁ}
s:real; {б㬬 § 票© дгЄжЁЁ}
st, {бва®Є®ў п ЇҐаҐ¬Ґ п, ў Є®в®аго § ®бпвбп ўлў®¤Ё¬лҐ нЄа ¤ЇЁбЁ}
Zagolovok:string; {ЇҐаҐ¬Ґ п ¤«п ўлў®¤ нЄа § Ј®«®ўЄ ЄагЈ®ў®© ¤Ё Ја ¬¬л}
begin
{ўў®¤ з «мле § 票©}
Textbackground(red);
Clrscr;
Textcolor(Blue);
GotoXY(10,5);
Write('‡ Ј®«®ў®Є ЄагЈ®ў®© ¤Ё Ја ¬¬л:');
Readln(Zagolovok);
Clrscr;
Gotoxy(10,5);
Write('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® § 票© дгЄжЁЁ:');
Readln(k);
Gotoxy(10,5);
Writeln('‚ўҐ¤ЁвҐ § 票п дгЄжЁЁ (Ї®«®¦ЁвҐ«млҐ):');
{ 宦¤ҐЁҐ бг¬¬л § 票© дгЄжЁЁ}
s:=0;
for i:=0 to k do begin
write(i:2,'§ 票Ґ дгЄжЁЁ:');
readln(f[i]);
s:=s+f[i];
end;
driver:=detect;
InitGraph(driver,err,'e:\BP7\BIN');
Setbkcolor(LightBlue);
Setcolor(LightGray);
{‚лзЁб«ҐЁҐ з «м®Ј® Ё Є®Ґз®Ј® гЈ«®ў Є ¦¤®Ј® ᥪв®а ¤Ё Ја ¬¬л}
alfa[1]:=alfan; alfa[k+1]:=alfan+360;
for i:=2 to k+1 do begin
Setcolor(LightGreen);
SetFillStyle(1,i);
alfa[i]:=alfa[i-1]+round(f[i-1]/s*360);
if alfa[i]>360 then alfa[i]:=alfa[i]-360;
if alfa[i-1]>360 then alfa[i-1]:=alfa[i-1]-360;
{аЁб®ў ЁҐ ᥪв®а ¤«п б«гз п, Є®Ј¤ Є®Ґзл© гЈ®« ¬ҐмиҐ з «м®Ј®}
if alfa[i]<alfa[i-1] then begin
Pieslice(xn,yn,alfa[i-1],360,r);
Pieslice(xn,yn,0,alfa[i],r);
Setcolor(LightBlue);
Line(xn,yn,xn+r-1,yn);
Setcolor(LightGreen);
FloodFill(xn+1,yn,LightGreen);
alfa[i]:=alfa[i]+360;
end
{аЁб®ў ЁҐ ᥪв®а ¤«п б«гз п, Є®Ј¤ Є®Ґзл© гЈ®« Ў®«миҐ з «м®Ј®}
else
Pieslice(xn,yn,alfa[i-1],alfa[i],r);
{ўлў®¤ ¤ЇЁбҐ©}
Setcolor(LightGray);
bet:=alfa[i-1]+(alfa[i]-alfa[i-1]) div 2;
if bet>360 then bet:=bet-360;
x:=xn+round(r*cos(bet*pi/180));
y:=yn-round(r*sin(bet*pi/180));
if ((bet>=0) and (bet<=90)) or((bet>=270) and (bet<=360))
then x1:=x+10
else x1:=x-8*ns-10;
if ((bet>=0) and (bet<=180))
then y1:=y-15
else y1:=y+7;
str(f[i-1]:ns:ms,st);
outtextxy(x1,y1,st);
end;
Setcolor(LightRed);
Settextstyle(0,Horizdir,2);
Outtextxy(400,460,'Ќ ¦¬ЁвҐ Enter');
Setcolor(LightMagenta);
Settextstyle(0,Horizdir,3);
Outtextxy(100,30,Zagolovok);
readln;
CloseGraph;
end.
Uses crt,Graph; {Ї®бв஥ЁҐ ЄагЄ®ў®© ¤Ё Ја ¬¬л}
const n = 12;
alfan = 0; {а §¬Ґа®бвм ¬ ббЁў § 票© дгЄжЁ©}
xn = 320; { з «мл© гЈ®« аЁб®ў Ёп ᥪ樨}
yn = 300; {Є®®а¤Ё вл жҐва ¤Ё Ја ¬¬л}
r = 150; {а ¤Ёгб ¤Ё Ја ¬¬л}
ns = 5; {Є-ў® Ї®§ЁжЁ© ў § ЇЁбЁ зЁб« ЇаЁ ўлў®¤Ґ ҐЈ® нЄа }
ms =2; {Є-ў® ў ¤а®Ў®© з бвЁ зЁб« ЇаЁ ўлў®¤Ґ ҐЈ® нЄа }
type m = array[1..n] of integer;
m1 = array[1..n] of real;
var f:m1; {¬ ббЁў § 票© дгЄжЁ©}
alfa:m; {¬ ббЁў § 票© гЈ«®ў}
driver,err,
k, {Є-ў® ᥪв®а®ў}
i, {Ї а ¬Ґва жЁЄ« }
bet, {жҐва «мл© гЈ®« б ᥪв®а }
y,x, {Є®®а¤Ё вл жҐва ¤гЈЁ ᥪв®а }
x1,y1:integer; {Є®®а¤Ё вл з «м®© в®зЄЁ Ї®«п ўлў®¤ ¤ЇЁбЁ}
s:real; {б㬬 § 票© дгЄжЁЁ}
st, {бва®Є®ў п ЇҐаҐ¬Ґ п, ў Є®в®аго § ®бпвбп ўлў®¤Ё¬лҐ нЄа ¤ЇЁбЁ}
Zagolovok:string; {ЇҐаҐ¬Ґ п ¤«п ўлў®¤ нЄа § Ј®«®ўЄ ЄагЈ®ў®© ¤Ё Ја ¬¬л}
begin
{ўў®¤ з «мле § 票©}
Textbackground(red);
Clrscr;
Textcolor(Blue);
GotoXY(10,5);
Write('‡ Ј®«®ў®Є ЄагЈ®ў®© ¤Ё Ја ¬¬л:');
Readln(Zagolovok);
Clrscr;
Gotoxy(10,5);
Write('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® § 票© дгЄжЁЁ:');
Readln(k);
Gotoxy(10,5);
Writeln('‚ўҐ¤ЁвҐ § 票п дгЄжЁЁ (Ї®«®¦ЁвҐ«млҐ):');
{ 宦¤ҐЁҐ бг¬¬л § 票© дгЄжЁЁ}
s:=0;
for i:=0 to k do begin
write(i:2,'§ 票Ґ дгЄжЁЁ:');
readln(f[i]);
s:=s+f[i];
end;
driver:=detect;
InitGraph(driver,err,'e:\BP7\BIN');
Setbkcolor(LightBlue);
Setcolor(LightGray);
{‚лзЁб«ҐЁҐ з «м®Ј® Ё Є®Ґз®Ј® гЈ«®ў Є ¦¤®Ј® ᥪв®а ¤Ё Ја ¬¬л}
alfa[1]:=alfan; alfa[k+1]:=alfan+360;
for i:=2 to k+1 do begin
Setcolor(LightGreen);
SetFillStyle(1,i);
alfa[i]:=alfa[i-1]+round(f[i-1]/s*360);
if alfa[i]>360 then alfa[i]:=alfa[i]-360;
if alfa[i-1]>360 then alfa[i-1]:=alfa[i-1]-360;
{аЁб®ў ЁҐ ᥪв®а ¤«п б«гз п, Є®Ј¤ Є®Ґзл© гЈ®« ¬ҐмиҐ з «м®Ј®}
if alfa[i]<alfa[i-1] then begin
Pieslice(xn,yn,alfa[i-1],360,r);
Pieslice(xn,yn,0,alfa[i],r);
Setcolor(LightBlue);
Line(xn,yn,xn+r-1,yn);
Setcolor(LightGreen);
FloodFill(xn+1,yn,LightGreen);
alfa[i]:=alfa[i]+360;
end
{аЁб®ў ЁҐ ᥪв®а ¤«п б«гз п, Є®Ј¤ Є®Ґзл© гЈ®« Ў®«миҐ з «м®Ј®}
else
Pieslice(xn,yn,alfa[i-1],alfa[i],r);
{ўлў®¤ ¤ЇЁбҐ©}
Setcolor(LightGray);
bet:=alfa[i-1]+(alfa[i]-alfa[i-1]) div 2;
if bet>360 then bet:=bet-360;
x:=xn+round(r*cos(bet*pi/180));
y:=yn-round(r*sin(bet*pi/180));
if ((bet>=0) and (bet<=90)) or((bet>=270) and (bet<=360))
then x1:=x+10
else x1:=x-8*ns-10;
if ((bet>=0) and (bet<=180))
then y1:=y-15
else y1:=y+7;
str(f[i-1]:ns:ms,st);
outtextxy(x1,y1,st);
end;
Setcolor(LightRed);
Settextstyle(0,Horizdir,2);
Outtextxy(400,460,'Ќ ¦¬ЁвҐ Enter');
Setcolor(LightMagenta);
Settextstyle(0,Horizdir,3);
Outtextxy(100,30,Zagolovok);
readln;
CloseGraph;
end.