Добавил:
bagiwow
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование / Лабораторные / ЭВТ-1-Паскаль / ST
.PAS uses crt,graph;
var m,dr:integer;
err:integer;
x,y:real;
ch:char;
cw,x0,y0,xc,yc,t,k,xp,yp,xx,yy:integer;
a,b,c:real;
procedure help;
begin
Cleardevice; { ЋзЁбвЄ нЄа }
Setviewport(50,50,600,400,true); { ‡ ¤ ЁҐ ⥪г饣® ®Є }
Settextstyle(0,0,2); { “бв ®ўЄ бвЁ«п ⥪бв }
Setbkcolor(1); { “бв ®ўЄ 梥в д® }
Setcolor(15); { “бв ®ўЄ 梥⠨§®Ўа ¦ҐЁп }
Outtextxy(1,1,'ESC - ‚л室 Ё§ Їа®Ја ¬¬л');
Outtextxy(1,60,'Q - “⮫饨Ґ «ЁЁ© ў 3 а § ');
Outtextxy(1,100,'W - Ћ¤Ё а п в®«йЁ «ЁЁ©');
Outtextxy(1,120,'‘’ђ…‹Љ€ - „ўЁ¦ҐЁҐ ў');
Outtextxy(40,140,'ᮮ⢥вбвўгойго бв®а®г');
Outtextxy(1,180,'„«п ўл室 Ё§ ®Є Ї®¬®йЁ');
Outtextxy(20,200,' ¦¬ЁвҐ «оЎго Є« ўЁиг');
Settextstyle(0,0,1); { “бв ®ўЄ бвЁ«п ⥪бв }
Readkey;
Setviewport(0,0,getmaxx,getmaxy,false); { ‡ ¤ ЁҐ ⥪г饣® ®Є }
setbkcolor(0);
Cleardevice; { ЋзЁбвЄ нЄа }
end;
BEGIN
dr:=0;
initgraph(dr,m,'c:\bpaskal\bgi\');
err:=graphresult;
if err<>0 then begin
writeln('®иЁЎЄ Ја дЁЄЁ:',grapherrormsg(err));
halt
end;
{ Ќ 室Ё¬ бҐаҐ¤Ёг нЄа }
x0:=getmaxx div 2;
y0:=getmaxy div 2;
{ ‡ ¤ Ґ¬ Є®®дЁжЁҐв 㢥«ЁзҐЁп Ја дЁЄ дгЄжЁЁ }
k:=25;
xx:=0;
yy:=0;
ch:=' ';
a:=1;
cw:=15;
while ch<>#13 do
begin
cleardevice;
outtextxy(1,40,'H ¦¬Ё ENTER ¤«п ўл室 ');
setcolor(cw);
if a<>0 then begin
{ ђЁб㥬 ®бЁ }
setcolor(15);
line(x0,0,x0,getmaxy);
line(0,y0,getmaxx,y0);
{ ђЁб㥬 а §«Ё®ўЄг ®бҐ© }
t:=0;
repeat
t:=t+k;
line(x0+t,y0-2,x0+t,y0+2);
line(x0-t,y0-2,x0-t,y0+2);
line(x0-2,y0-t,x0+2,y0-t);
line(x0-2,y0+t,x0+2,y0+t)
until t>x0-k;
{ Џaа Ў®« y=a*sqr(x)+b*x+c }
xc:=round((-b/(2*a))*k+x0);
yc:=round(y0-(-sqr(b)/(4*a)+c)*k);
moveto(xc+xx,yc+yy);
x:=round(-b/(2*a));
y:=round((-sqr(b)/(4*a)+c));
for t:=1 to x0 do begin
x:=x+1/k;
y:=a*sqr(x)+b*x+c;
setcolor(cw);
xp:=round(x*k+x0);
yp:=round(y0-y*k);
lineto(xp+xx,yp+yy)
end;
moveto(xc+xx,yc+yy); { аЁб㥬 «Ґўго Ї®«®ўЁг Їaа Ў®«л }
x:=round(-b/(2*a));
y:=round((-sqr(b)/(4*a)+c));
for t:=1 to x0 do begin
setcolor(cw);
x:=x-1/k;
y:=a*sqr(x)+b*x+c;
xp:=round(x*k+x0);
yp:=round(y0-y*k);
lineto(xp+xx,yp+yy)
end;
end
else a:=-0.00001;
ch:=readkey;
if ch=#0 then ch:=readkey;
case ch of
#72: c:=c+5/k;
#80: c:=c-5/k;
#75: begin {b:=sqrt(sqr(b)+2*a); c:=c+1/2}xx:=xx-1; end;
#77: begin {b:=sqrt(sqr(b)-2*a); c:=c-1/2}xx:=xx+1; end;
#60: a:=a+1/k;
#62: a:=a-1/k;
'1': cw:=1;
'2': cw:=2;
'3': cw:=3;
'4': cw:=4;
'5': cw:=5;
'6': cw:=6;
'7': cw:=7;
'8': cw:=8;
'9': cw:=9;
'0': cw:=10;
'a': cw:=11;
'b': cw:=12;
'c': cw:=13;
'd': cw:=14;
'e': cw:=15;
'q': setlinestyle(0,0,3);
'Q': setlinestyle(0,0,1);
#59: help
end;
outtextxy(1,60,'F1-Ї®¬®йм');
setviewport(0,0,getmaxx,getmaxy,true);
setcolor(cw);
end;
closegraph
END.
var m,dr:integer;
err:integer;
x,y:real;
ch:char;
cw,x0,y0,xc,yc,t,k,xp,yp,xx,yy:integer;
a,b,c:real;
procedure help;
begin
Cleardevice; { ЋзЁбвЄ нЄа }
Setviewport(50,50,600,400,true); { ‡ ¤ ЁҐ ⥪г饣® ®Є }
Settextstyle(0,0,2); { “бв ®ўЄ бвЁ«п ⥪бв }
Setbkcolor(1); { “бв ®ўЄ 梥в д® }
Setcolor(15); { “бв ®ўЄ 梥⠨§®Ўа ¦ҐЁп }
Outtextxy(1,1,'ESC - ‚л室 Ё§ Їа®Ја ¬¬л');
Outtextxy(1,60,'Q - “⮫饨Ґ «ЁЁ© ў 3 а § ');
Outtextxy(1,100,'W - Ћ¤Ё а п в®«йЁ «ЁЁ©');
Outtextxy(1,120,'‘’ђ…‹Љ€ - „ўЁ¦ҐЁҐ ў');
Outtextxy(40,140,'ᮮ⢥вбвўгойго бв®а®г');
Outtextxy(1,180,'„«п ўл室 Ё§ ®Є Ї®¬®йЁ');
Outtextxy(20,200,' ¦¬ЁвҐ «оЎго Є« ўЁиг');
Settextstyle(0,0,1); { “бв ®ўЄ бвЁ«п ⥪бв }
Readkey;
Setviewport(0,0,getmaxx,getmaxy,false); { ‡ ¤ ЁҐ ⥪г饣® ®Є }
setbkcolor(0);
Cleardevice; { ЋзЁбвЄ нЄа }
end;
BEGIN
dr:=0;
initgraph(dr,m,'c:\bpaskal\bgi\');
err:=graphresult;
if err<>0 then begin
writeln('®иЁЎЄ Ја дЁЄЁ:',grapherrormsg(err));
halt
end;
{ Ќ 室Ё¬ бҐаҐ¤Ёг нЄа }
x0:=getmaxx div 2;
y0:=getmaxy div 2;
{ ‡ ¤ Ґ¬ Є®®дЁжЁҐв 㢥«ЁзҐЁп Ја дЁЄ дгЄжЁЁ }
k:=25;
xx:=0;
yy:=0;
ch:=' ';
a:=1;
cw:=15;
while ch<>#13 do
begin
cleardevice;
outtextxy(1,40,'H ¦¬Ё ENTER ¤«п ўл室 ');
setcolor(cw);
if a<>0 then begin
{ ђЁб㥬 ®бЁ }
setcolor(15);
line(x0,0,x0,getmaxy);
line(0,y0,getmaxx,y0);
{ ђЁб㥬 а §«Ё®ўЄг ®бҐ© }
t:=0;
repeat
t:=t+k;
line(x0+t,y0-2,x0+t,y0+2);
line(x0-t,y0-2,x0-t,y0+2);
line(x0-2,y0-t,x0+2,y0-t);
line(x0-2,y0+t,x0+2,y0+t)
until t>x0-k;
{ Џaа Ў®« y=a*sqr(x)+b*x+c }
xc:=round((-b/(2*a))*k+x0);
yc:=round(y0-(-sqr(b)/(4*a)+c)*k);
moveto(xc+xx,yc+yy);
x:=round(-b/(2*a));
y:=round((-sqr(b)/(4*a)+c));
for t:=1 to x0 do begin
x:=x+1/k;
y:=a*sqr(x)+b*x+c;
setcolor(cw);
xp:=round(x*k+x0);
yp:=round(y0-y*k);
lineto(xp+xx,yp+yy)
end;
moveto(xc+xx,yc+yy); { аЁб㥬 «Ґўго Ї®«®ўЁг Їaа Ў®«л }
x:=round(-b/(2*a));
y:=round((-sqr(b)/(4*a)+c));
for t:=1 to x0 do begin
setcolor(cw);
x:=x-1/k;
y:=a*sqr(x)+b*x+c;
xp:=round(x*k+x0);
yp:=round(y0-y*k);
lineto(xp+xx,yp+yy)
end;
end
else a:=-0.00001;
ch:=readkey;
if ch=#0 then ch:=readkey;
case ch of
#72: c:=c+5/k;
#80: c:=c-5/k;
#75: begin {b:=sqrt(sqr(b)+2*a); c:=c+1/2}xx:=xx-1; end;
#77: begin {b:=sqrt(sqr(b)-2*a); c:=c-1/2}xx:=xx+1; end;
#60: a:=a+1/k;
#62: a:=a-1/k;
'1': cw:=1;
'2': cw:=2;
'3': cw:=3;
'4': cw:=4;
'5': cw:=5;
'6': cw:=6;
'7': cw:=7;
'8': cw:=8;
'9': cw:=9;
'0': cw:=10;
'a': cw:=11;
'b': cw:=12;
'c': cw:=13;
'd': cw:=14;
'e': cw:=15;
'q': setlinestyle(0,0,3);
'Q': setlinestyle(0,0,1);
#59: help
end;
outtextxy(1,60,'F1-Ї®¬®йм');
setviewport(0,0,getmaxx,getmaxy,true);
setcolor(cw);
end;
closegraph
END.