|
(Отстывание кофе) cof.pas uses crt,graph; var temp, t,tkon, r, tc, dt, hu,hv, rx, ry, sx,sy:real;
procedure init; var d, m:integer; begin d:=detect; initgraph(d,m,''); temp:=95; t:=0; tkon:=30; dt:=0.001; r:=1; tc:=22; hu:=5; hv:=getmaxy-5; rx:=tkon; ry:=100; sx:=getmaxx/rx; sy:=getmaxy/ry; line(round(hu),0,round(hu),getmaxy); line(0,round(hv),getmaxx,round(hv)) end;
procedure outres(x,y:real; color:word); var u,v:word; begin u:=round(x*sx+hu); v:=round(-y*sy+hv); putpixel(u,v,color); end;
procedure euler; begin while t<tkon do begin temp:=temp-r*(temp-tc)*dt; t:=t+dt; outres(t,temp,white); end; end;
BEGIN init; outres(t,temp,white); euler; repeat until keypressed; closegraph; END. | (Отстывание кофе, выводит значения в виде таблице) cof1.pas uses crt,graph; var temp, t,tkon, r, tc, dt, hu,hv, rx, ry, sx,sy:real;
procedure init; var d, m:integer; begin crlscr; d:=detect; temp:=83; t:=0; tkon:=15; dt:=1; r:=0.04; tc:=22; hu:=5; hv:=getmaxy-5; rx:=tkon; ry:=100; sx:=getmaxx/rx; sy:=getmaxy/ry; end;
procedure outres(x,y:real; color:word); var u,v:word; begin writeln(x:5:0,’’,y:5:1); end;
procedure euler; begin while t<tkon do begin temp:=temp-r*(temp-tc)*dt; t:=t+dt; outres(t,temp,white); end; end;
BEGIN init; outres(t,temp,white); euler; repeat until keypressed; END.
| (падает относительно горизонта) gr.pas program gr; uses crt,graph; var v,tk,h,a,t,rx,ry,tc,dt,hu,hv,x,y, sx,sy,ax,ay,vx,vy,mas:real;
procedure init; var d,m:integer; begin d:=detect; initgraph(d,m,''); x:=0; v:=20; vx:=v*cos(pi/4); vy:=v*sin(pi/4); h:=0.05; dt:=0.001; hu:=5; hv:=getmaxy-5; tc:=20; rx:=tc; ry:=100; sx:=getmaxx/rx; sy:=getmaxy/ry; line(round(hu),0,round(hu),round(getmaxy)); line(0,round(hv),getmaxx,round(hv)); end;
procedure outres(x,y:real;color:word); var u,v:word; begin u:=round(x*sx+hu); v:=round(-y*sy+hv); putpixel(u,v,color); end;
procedure Paden; begin while h>0 do begin ax:=0; ay:=-9.8; vx:=vx+ax*dt; vy:=vy+ay*dt; x:=x+vx*dt; h:=h+vy*dt; t:=t+dt; outres(x,h,red); end; end; {учётCопрот:v:=sqrt(vx*vx+vy*vy); Ax:= -k*v*vx Ay:=-9.8-k*v*vy} {ветер: ax:=-k*v*vx+3;} BEGIN init; outres(x,h,red); paden; repeat until keypressed; closegraph; END. | (падает относительно вертикали) pad1.pas uses crt,graph; const g=9.8; k=1; var a,v,h,y,m,r,t, dt, hu,hv, rx, ry, sx,sy:real;
procedure init; var d, m:integer; begin d:=detect; initgraph(d,m,''); m:=5; h:=90; t:=0; dt:=0.0001; hu:=5; hv:=getmaxy-5; rx:=10; ry:=100; sx:=getmaxx/rx; sy:=getmaxy/ry; line(round(hu),0,round(hu),getmaxy); line(0,round(hv),getmaxx,round(hv)) end;
procedure outres(x,y:real; color:word); var u,v:word; begin u:=round(x*sx+hu); v:=round(-y*sy+hv); putpixel(u,v,color); setcolor(1); circle(630,v,10); delay(3); setcolor(0); circle(630,v,10); end;
procedure euler; begin while h>0 do begin a:=-9.8; v:=v+a*dt; h:=h+v*dt; t:=t+dt; outres(t,h,white); end; end;
BEGIN init; outres(t,h,white); euler; repeat until keypressed; closegraph; END.
|
(грузик на пружинке) gruzik.pas program gr; uses crt,graph; var x,v,a,w0,gamma,w,t,dt,tk,f0:real; Hu,Hv,Sx,Sy,rx,ry:real;
procedure init; var d,m:integer; begin d:=detect; initgraph(d,m,''); Hu:=5; Hv:=getmaxy/2; tk:=20; rx:=tk; ry:=3; Sx:=getmaxx/rx; Sy:=getmaxy/ry; dt:=0.00001; t:=0; x:=1; v:=1; w0:=1; gamma:=1; f0:=0.1; w:=1; line(round(Hu),0,round(Hu),round(getmaxx)); line(0,round(Hv),getmaxx,round(Hv)); end;
procedure outres(x,y:real;color:word); var u,v:word; begin u:=round(x*Sx+Hu); v:=round(-y*Sy+Hv); putpixel(u,v,color); end;
procedure euler; begin while t<tk do begin a:= -w0*w0*x-gamma*v+f0*cos(w*t); v:=v+a*dt; x:=x+v*dt; t:=t+dt; outres(t,x,red); end; end; {для1случ.:a:=-w0*w0*x; для2случ.:a:=-w0*x-gamma+v;} BEGIN init; outres(t,x,red); euler; repeat until keypressed; closegraph; END. | (Кролики и лисы) kroliki.pas program lisi; uses crt,graph; var Hu,Hv,Sx,Sy,rx,ry:real; f,g,r,t,dt,tk,krbr,krdr,krbf,krdf:real;
procedure Init; var d,m:integer; begin d:=detect; Initgraph(d,m,''); Hu:=5; Hv:=getmaxy-5; g:=6; r:=5; f:=4; t:=0; dt:=0.0001; tk:=30; krbr:=0.5; krdr:=0.5; krbf:=0.05; krdf:=0.5; rx:=tk; ry:=100; Sx:=getmaxx/rx; Sy:=getmaxy/ry; line(round(Hu),0,round(Hu),round(getmaxx)); line(0,round(Hv),getmaxx,round(Hv)); end;
Procedure outres(x,y:real;color:word); var u,v:word; begin u:=round(x*Sx+Hu); v:=round(-y*Sy+Hv); PutPixel(u,v,color); end;
procedure euler; begin while t<tk do begin r:=(krbr*g*r-krdr*f*r)*dt+r; f:=(krbf*r*f-krdf*f)*dt+f; t:=t+dt; { outres(f,r,red);{fazovaya 4astota} outres(t,f,red); outres(t,r,white); end; end;
BEGIN init; outres(t,f,red); outres(t,r,white); {outres(f,r,red);{fazovaya 4astota} euler; repeat until keypressed; closegraph; END. | (глайдер) life.pas program life; uses crt; const n=10; type matrix=array[1..n,1..n] of 0..1; var a,b:matrix; i,j,t,tk:integer; s:byte;
procedure init; begin t:=1; tk:=100; for i:=1 to n do begin for j:=1 to n do a[i,j]:=0; end; a[5,3]:=1; a[5,4]:=1; a[5,5]:=1; { a[4,5]:=1;{glaider} {a[3,4]:=1;{glauder} b:=a; end;
procedure print (x:matrix); begin clrscr; for i:=1 to n do begin for j:=1 to n do if x[i,j]=1 then write('*') else write(' '); writeln; end; end; function sosedi(i,j:integer):byte; var im,ip,jm,jp:byte; begin im:=i-1; ip:=i+1; jm:=j-1; jp:=j+1; if im=0 then im:=n; if ip=n+1 then ip:=1; if jm=0 then jm:=n; if jp=n+1 then jp:=1; sosedi:=a[im,jm]+a[im,j]+a[im,jp]+a[i,jm]+a[i,jp]+a[ip,jm]+a[ip,j]+a[ip,jp]; end; BEGIN clrscr; Init; print(a); writeln; repeat for i:=1 to n do for j:=1 to n do begin s:=sosedi(i,j); if (s=3) then b[i,j]:=1; if (s<2) or (s>3) then b[i,j]:=0; end; print(b); a:=b; t:=t+1; delay(10000); {glaider} until t>tk; readln; END. | (падает под углом) pod_ug.pas program gr; {bez soprotiv} uses crt,graph; var v,t,k,a,rx,ry,dt,hu,hv,x,y, sx,sy,ax,ay,vx,vy,mas:real;
procedure init; var d,m:integer; begin d:=detect; initgraph(d,m,''); k:=1;{pri soprot} v:=150; a:=pi*45/180;{iz gradusov v radian} x:=0; y:=0.0001; t:=0; dt:=0.00001; vx:=v*cos(a); vy:=v*sin(a); hu:=5; hv:=getmaxy-3; rx:=10; ry:=20; sx:=getmaxx/rx; sy:=sx; line(round(hu),0,round(hu),round(getmaxy)); line(0,round(hv),getmaxx,round(hv)); end;
procedure outres(x,y:real;color:word); var u,v:word; begin u:=round(x*sx+hu); v:=round(-y*sy+hv); putpixel(u,v,color); end;
procedure euler; begin while y>0 do begin {ax:=0;{bez sopr} {ay:=-9.8;{bez sopr} v:=sqrt(vx*vx+vy*vy);{pri sopr} ax:=-k*v*vx+3;{pri sopr}{-3 dobav weter,esli duet po x,to +3, esli protiv x,to -3} ay:=-9.8-k*v*vy;{pri sopr} vx:=vx+ax*dt; vy:=vy+ay*dt; x:=x+vx*dt; y:=y+vy*dt; t:=t+dt; outres(x,y,red); end; end;
BEGIN init; outres(x,y,red); euler; repeat until keypressed; closegraph; END.
| |||||||
(график синуса) sin.pas Program sinus; uses crt, graph; const PI=3.14; var x,y,dx,a,b,rx,ry,Sx,Sy,Hu,Hv:real;
Procedure Init; var d,m:integer; begin d:=detect; InitGraph(d,m,''); a:=-2*Pi; b:=3*PI; dx:=0.001; Hu:=GetMaxX/2; Hv:=GetmaxY/2; rx:=b-a; ry:=3; Sx:=GetMaxX/rx; Sy:=GetMaxY/ry; Line(round(Hu),0,round(Hu),round(Getmaxy)); Line(0,round(Hv),Getmaxx,round(Hv)); end;
Procedure Outres(x,y:real; color:word); var u,v:word; begin u:=round(x*Sx+Hu); v:=round(-y*Sy+Hv); PutPixel(u,v,color); end;
Procedure Plot; begin x:=a; while x<b do begin y:=sin(x); Outres(x,y,white); x:=x+dx; end; Repeat until KeyPressed; CloseGraph; end;
BEGIN Init; Plot; END. | (земля вокруг солнца) zem_i_so.pas program gr; {bez soprotiv} uses crt,graph; var rx,ry,hu,hv,sx,sy, x,y,vx,vy,ax,ay,v,gm,t,tk,dt,r,k,wx:real; procedure init; var d,m:integer; begin d:=detect; initgraph(d,m,''); k:=1;{pri soprot} gm:=4*pi*pi; x:=1; y:=0; t:=0; tk:=1; dt:=0.000001; vx:=0; vy:=2*pi; wx:=0.01*gm/x*x;{weter добав в Init} hu:=getmaxx/2; hv:=getmaxy/2; rx:=3; sx:=getmaxx/rx; sy:=sx; line(round(hu),0,round(hu),round(getmaxy)); line(0,round(hv),getmaxx,round(hv)); end; procedure outres(x,y:real;color:word); var u,v:word; begin u:=round(x*sx+hu); v:=round(-y*sy+hv); putpixel(u,v,color); end; procedure euler; begin while t<tk do begin v:=sqrt(vx*vx+vy*vy);{pri sopr} r:=sqrt(x*x+y*y);{bez sopr} r:=r*r*r;{bez sopr} {ax:=-gm/r*x+wx;{bez sopr,+wx-+weter} {ay:=-gm/r*y;{bez sopr} ax:=-gm/r*x-k*v*vx+wx;{pri sopr} ay:=-gm/r*y-k*v*vy;{pri sopr} vx:=vx+ax*dt; vy:=vy+ay*dt; x:=x+vx*dt; y:=y+vy*dt; t:=t+dt; outres(x,y,red); end; end; BEGIN init; outres(x,y,red); euler; repeat until keypressed; closegraph; END. | (Генератор+период+вещ.числа) Generat.pas program generat; uses crt; var x,x1,a,c,i,m,n:integer;
procedure init; begin x:=3; c:=5; a:=2; m:=7; {n:=0; {period} {m:=97; {period} end;
function gen:integer; begin x:=(a*x+c) mod m; gen:=x; end;
{function gen1:real; {wesestwen} { begin gen1:=gen/m; end;}
BEGIN clrscr; init; {x1:=x; {period} {repeat {period} {n:=n+1; {period} {write(gen:8); {period} {until {period} {x=x1; {period} {writeln; {period} {write('period=',n); {period} {readln; {period} for i:=1 to 15 do write(gen:8); {write(gen1:8:5);{wesestwen} readln; END. | (нейман) program neiman; uses crt; var x,y,a,b,u,v,fm:real; i:integer;
function f(x,s:real):real; begin f:=exp(-sqr(x/s)/2)/(s+sqrt(2*pi)); end;
procedure init; begin a:=-5; b:=5; fm:=f(0,1); end;
function ney:real; begin repeat x:=random; y:=random; u:=a+x*(b-a); v:=y*fm; until v<f(u,1); ney:=u; end;
BEGIN clrscr; randomize; init; for i:=1 to 100 do write(ney:8:2); readln; END. | |||||||
Монтекарло для x2. montekar.pas program integral; uses crt; var x,y,fm,a,b,int2,pogr,integ,otnospogr:real; i,n0,n:integer;
function f(x:real):real; Begin f:=sqr(x); end;
Procedure Init; Begin a:=-2; b:=2; fm:=f(2); n0:=100; end;
function int:real; begin for i:=1 to n0 do begin x:=(b-a)*random+a; y:=fm*random; if f(x)>y then n:=n+1; end; int:=((b-a)*fm*n)/n0; end;
BEGIN randomize; clrscr; init; integ:=int; int2:=1/3*(b*b*b-a*a*a); pogr:=abs(integ-int2); otnospogr:=pogr/int2*100; writeln(' pogr= ',pogr:2:2); write('int= ',integ:8:2); readln; writeln('int2= ',int2:2:2); readln; writeln('otnospogr= ',otnospogr:2:2,'%'); readln; END. | Монтек для двойного интегр Mont_v.pas program integral; uses crt; var z,c,d,x,y,fm,a,b,int2,pogr,integ,otnospogr:real; i,n0,n:integer;
function f(x,y:real):real; Begin f:=exp(-x*x-y*y); end;
Procedure Init; Begin a:=-2; b:=2; c:=-2; d:=2; fm:=f(0,0); n0:=10000; end;
function int:real; begin for i:=1 to n0 do begin x:=(b-a)*random+a; y:=(d-c)*random+c; z:=fm*random; if f(x,y)>z then n:=n+1; end; int:=((b-a)*(d-c)*fm*n)/n0; end;
BEGIN randomize; clrscr; init; integ:=int; int2:=3.112;{pervoobr s4itaem v matcade} pogr:=abs(integ-int2); otnospogr:=pogr/int2*100; writeln(' pogr= ',pogr:2:2); write('int= ',integ:8:2); readln; writeln('int2= ',int2:2:2); readln; writeln('otnospogr= ',otnospogr:2:2,'%'); readln; END. | Монтек для син mont_sin.pas program integral; uses crt; var x,y,fm,a,b,int2,pogr,integ,otnospogr:real; i,n0,n:integer;
function f(x:real):real; Begin f:=sin(x); end;
Procedure Init; Begin a:=0; b:=pi/2; fm:=f(2); n0:=100; end;
function int:real; begin for i:=1 to n0 do begin x:=(b-a)*random+a; y:=fm*random; if f(x)>y then n:=n+1; end; int:=((b-a)*fm*n)/n0; end;
BEGIN randomize; clrscr; init; integ:=int; int2:=cos(a)-cos(b); pogr:=abs(integ-int2); otnospogr:=pogr/int2*100; writeln(' pogr= ',pogr:2:2); write('int= ',integ:8:2); readln; writeln('int2= ',int2:2:2); readln; writeln('otnospogr= ',otnospogr:2:2,'%'); readln; END. | Динамич хаос R_6.pas program zav; uses crt,graph; var r,x,y,x0,n,nkon,dn:real; rx,ry,hu,hv,sx,sy:real;
procedure init; var d,m,u,v,u1,v1:integer; begin d:=detect; initgraph(d,m,''); x:=0.01; nkon:=100; r:=0.4; dn:=1; hu:=5; hv:=getmaxy-5; rx:=nkon; ry:=1.5; sx:=getmaxx/rx; sy:=getmaxy/ry; line(round(hu),0,round(hu),round(getmaxy)); line(0,round(hv),getmaxx,round(hv)); u:=round(n*sx+hu); v:=round(-x*sy+hv); MoveTo(u,v); Setcolor(lightred); end;
procedure outres(x,y:real;color:word); var u,v:word; begin u:=round(x*sx+hu); v:=round(-y*sy+hv); LineTo(u,v); end;
procedure qq; begin n:=1; while n<nkon do begin x:=4*r*x*(1-x); outres(n,x,lightred); n:=n+dn; end; repeat until keypressed; closegraph; end;
BEGIN init; outres(0,x,lightred); qq; END. | |||||||
Фрактал коха Fractals.pas uses crt, graph; var hu,hv,fi,rx,ry,sx,sy,dx,x1,x2,y1,y2:real;
procedure init; var d,m: integer; begin d:=detect; initgraph(d,m,''); Hu:=5; Hv:=getmaxy-5; rx:=3; ry:=3; sx:=getmaxx/rx; sy:=sx; fi:=pi/3; end;
{для снежинки добавляем a:=0; b:=1 меняем Hu:=getmaxx/2; Hv:=getmaxy/2}
Procedure Outres(x1,y1,x2,y2:real); var u1,v1,u2,v2:word; begin u1:=round(x1*Sx+hu); v1:=round(-y1*sy+hv); u2:=round(x2*Sx+hu); v2:=round(-y2*sy+hv); line(u1,v1,u2,v2); end;
procedure draw(x1,y1,x2,y2:real;n:word); var x3,x4,y3,y4,x5,y5,dx,dy:real; begin if n>0 then begin dx:=(x2-x1)/3; dy:=(y2-y1)/3; x3:=x1+dx; y3:=y1+dy; x5:=x2-dx; y5:=y2-dy; x4:=dx*cos(fi)-dy*sin(fi)+x3; y4:=dx*sin(fi)+dy*cos(fi)+y3; draw(x1,y1,x3,y3,n-1); draw(x3,y3,x4,y4,n-1); draw(x4,y4,x5,y5,n-1); draw(x5,y5,x2,y2,n-1); end else outres(x1,y1,x2,y2); end;
BEGIN init; outres(x1,y1,x2,y2);
{draw(0,0,1,0,3)}
{сненжинка(весто нижнего) draw(0.5,0,-0.5,0,5); draw(-0.5,0,0,1,5); draw(0,1,0.5,0,5); } draw(0.5,0,-0.5,0,3); draw(-0.5,0,0,1,3); draw(0,1,0.5,0,3); repeat until keypressed; closegraph; END. | Фрактал Минховского полностью.fra_me3.pas uses crt, graph; var hu,hv,fi,rx,ry,sx,sy,dx,x1,x2,y1,y2,x3,y3:real;
procedure init; var d,m: integer; begin d:=detect; initgraph(d,m,''); Hu:=getmaxx/2; Hv:=getmaxy/2; rx:=3; ry:=3; sx:=getmaxx/rx; sy:=sx; fi:=pi/2; end;
Procedure Outres(x1,y1,x2,y2:real); var u1,v1,u2,v2,u3,v3:word; begin u1:=round(x1*Sx+hu); v1:=round(-y1*sy+hv); u2:=round(x2*Sx+hu); v2:=round(-y2*sy+hv); {u3:=round(x3*Sx+hu); v3:=round(-y3*sy+hv); } line(u1,v1,u2,v2); {line(u2,v2,u3,v3);} end;
procedure draw(x1,y1,x2,y2:real;n:word); var x3,x4,y3,y4,x5,y5,x6,y6,x7, y7, x8, y8, x9, y9, dx,dy:real; begin if n>0 then begin dx:=(x2-x1)/4; dy:=(y2-y1)/4; x3:=x1+dx; y3:=y1+dy; x9:=x2-dx; y9:=y2-dy; x4:=dx*cos(fi)-dy*sin(fi)+x3; y4:=dx*sin(fi)+dy*cos(fi)+y3; x5:=x4+dx; y5:=y4+dy; x6:=x3+dx; y6:=y3+dy; x7:=dx*cos(3*pi/2)-dy*sin(3*pi/2)+x6; y7:=dx*sin(3*pi/2)+dy*cos(3*pi/2)+y6; x8:=x7+dx; y8:=y7+dy; draw(x1,y1,x3,y3,n-1); draw(x3,y3,x4,y4,n-1); draw(x4,y4,x5,y5,n-1); draw(x5,y5,x6,y6,n-1); draw(x6,y6,x7,y7,n-1); draw(x7, y7, x8, y8, n-1); draw(x8, y8, x9, y9, n-1); draw(x9,y9,x2,y2,n-1); end else outres(x1,y1,x2,y2); end;
BEGIN init; outres(x1,y1,x2,y2); draw(0,0,1,0,5); draw(1,0,1,1,5); draw(1,1,0,1,5); draw(0,1,0,0,5); repeat until keypressed; closegraph; END. | Фрактал Минховского не полностью.fra_me2.pas uses crt, graph; var hu,hv,fi,rx,ry,sx,sy,dx,x1,x2,y1,y2,x3,y3:real;
procedure init; var d,m: integer; begin d:=detect; initgraph(d,m,''); Hu:=getmaxx/2; Hv:=getmaxy/2; rx:=3; ry:=3; sx:=getmaxx/rx; sy:=sx; fi:=pi/2; end;
Procedure Outres(x1,y1,x2,y2:real); var u1,v1,u2,v2,u3,v3:word; begin u1:=round(x1*Sx+hu); v1:=round(-y1*sy+hv); u2:=round(x2*Sx+hu); v2:=round(-y2*sy+hv); {u3:=round(x3*Sx+hu); v3:=round(-y3*sy+hv); } line(u1,v1,u2,v2); {line(u2,v2,u3,v3);} end; procedure draw(x1,y1,x2,y2:real;n:word); var x3,x4,y3,y4,x5,y5,x6,y6,x7, y7, x8, y8, x9, y9, dx,dy:real; begin if n>0 then begin dx:=(x2-x1)/4; dy:=(y2-y1)/4; x3:=x1+dx; y3:=y1+dy; x9:=x2-dx; y9:=y2-dy; x4:=dx*cos(fi)-dy*sin(fi)+x3; y4:=dx*sin(fi)+dy*cos(fi)+y3; x5:=x4+dx; y5:=y4+dy; x6:=x3+dx; y6:=y3+dy; x7:=dx*cos(3*pi/2)-dy*sin(3*pi/2)+x6; y7:=dx*sin(3*pi/2)+dy*cos(3*pi/2)+y6; x8:=x7+dx; y8:=y7+dy; draw(x1,y1,x3,y3,n-1); draw(x3,y3,x4,y4,n-1); draw(x4,y4,x5,y5,n-1); draw(x5,y5,x6,y6,n-1); draw(x6,y6,x7,y7,n-1); draw(x7, y7, x8, y8, n-1); draw(x8, y8, x9, y9, n-1); draw(x9,y9,x2,y2,n-1); end else outres(x1,y1,x2,y2); end;
BEGIN init; outres(x1,y1,x2,y2); draw(0,0,1,0,7); {draw(-0.5,0,0,1,3); draw(0,1,0.5,0,3); } repeat until keypressed; closegraph; END. | Фрактал Минховского часть увеличенная.fra_me.pas uses crt, graph; var hu,hv,fi,rx,ry,sx,sy,dx,x1,x2,y1,y2,x3,y3:real;
procedure init; var d,m: integer; begin d:=detect; initgraph(d,m,''); Hu:=getmaxx/2; Hv:=getmaxy/2; rx:=3; ry:=3; sx:=getmaxx/rx; sy:=sx; fi:=pi/2; end; ProcedureOutres(x1,y1,x2,y2:real); var u1,v1,u2,v2,u3,v3:word; begin u1:=round(x1*Sx+hu); v1:=round(-y1*sy+hv); u2:=round(x2*Sx+hu); v2:=round(-y2*sy+hv); line(u1,v1,u2,v2); end;
procedure draw(x1,y1,x2,y2:real;n:word); var x3,x4,y3,y4,x5,y5,x6,y6,dx,dy:real; begin if n>0 then begin dx:=(x2-x1)/3; dy:=(y2-y1)/3; x3:=x1+dx; y3:=y1+dy; x6:=x2-dx; y6:=y2-dy; x4:=dx*cos(fi)-dy*sin(fi)+x3; y4:=dx*sin(fi)+dy*cos(fi)+y3; x5:=x4+dx; y5:=y4+dy; draw(x1,y1,x3,y3,n-1); draw(x3,y3,x4,y4,n-1); draw(x4,y4,x5,y5,n-1); draw(x5,y5,x6,y6,n-1); draw(x6,y6,x2,y2,n-1); end else outres(x1,y1,x2,y2); end;
BEGIN init; outres(x1,y1,x2,y2); draw(0.5,0,-0.5,0,3); repeat until keypressed; closegraph; END. | |||||
program Avtomat; uses crt; const n=10; type matr=array[1..n,1..n] of 0..1; var A,B:matr; i,j,t,tk:integer; s:byte; procedure Init; begin for i:=1 to n do begin for j:=1 to n do A[i,j]:=0; end; A[5,3]:=1; A[5,4]:=1; A[5,5]:=1; B:=A; t:=1; tk:=5; end; Procedure Print(x:matr); begin for i:=1 to n do begin for j:=1 to n do write(x[i,j],' '); writeln; end; end; Function Sosedi(i,j:integer):byte; var im,ip,jm,jp:integer; begin im:=i-1; ip:=i+1; jm:=i-1; jp:=j+1; if im=0 then im:=n; if ip=n+1 then ip:=1; if jm=0 then jm:=n; if jp=n+1 then jp:=1; Sosedi:=a[im,jm]+a[im,j]+a[im,jp] +a[i,jm]+a[i,j]+a[i,jp]+a[ip,jm]+ a[ip,j]+a[ip,jp]; end;
BEGIN clrscr; init; print(a); writeln; repeat for i:=1 to n do for j:=1 to n do begin s:=Sosedi(i,j); if (s>3) or (s<2) then B[i,j]:=0; if s=3 then B[i,j]:=1; end; Print(B); A:=B; readln; t:=t+1; until t>tk END.
| Фибоначчи program Fibonschi; uses crt; var a:array [1..17] of real; x:real; i,j,k:integer;
procedure Init; begin for i:=1 to 17 do a[i]:=random; i:=17; j:=5; end; Function Fib:real; begin x:=a[i]-a[j]; if x<0 then x:=x+1; a[i]:=x; dec(i); dec(j); if i=0 then i:=17; if j=0 then j:=17; fib:=x; end;
BEGIN clrscr; randomize; Init; for k:=1 to 50 do write(fib:8:4); readln; END. | Период program Period; uses crt,graph; var a:array [1..1000] of real; i:integer; procedure init; var d,m:integer; begin d:=detect; initgraph(d,m,''); n:=0; nmax:=100; r:=0.86;{mogno menat'} x:=0.5; {меняем зн-е x:=0.5; r:=0.001; rx:=1.1; ry:=1.1; dn:=0.001;}
hu:=5; hv:=getmaxy-5; rx:=nmax; ry:=1.1; sx:=getmaxx/rx; sy:=GetMaxy/ry; end;
procedure outres(x,y:real;color:word); var u,v:word; begin u:=round(x*sx+hu); v:=round(-y*sy+hv); putpixel(u,v,color); end;
BEGIN init; while n<nmax do begin x:=4*r*x*(1-x); outres(n,x,white); n:=n+1; end; repeat until keypressed; closegraph; end.
| Удвоение периода program Udvoenie; uses crt,graph; var a:array [1..1000] of real; i:integer; procedure init; var d,m:integer; begin d:=detect; initgraph(d,m,''); dp:=0.001; n:=0; r:=0.01; x:=0.2; hu:=5; hv:=getmaxy-5; rx:=1.1; ry:=1.1; sx:=getmaxx/rx; sy:=GetMaxy/ry; end; procedure outres(x,y:real;color:word); var u,v:word; begin u:=round(x*sx+hu); v:=round(-y*sy+hv); putpixel(u,v,color); end; procedure graf; begin while r<1 do begin x:=0.5; for i:=1 to 500 do x:=4*r*x*(1-x); for i:=1 to 1000 do begin x:=4*r*x*(1-x); outres(r,x,white); end; r:=r+dr; end; end;
BEGIN init; graf; repeat until keypressed; closegraph; end.
| |||||
Дата добавления: 2015-11-04; просмотров: 24 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
| | Форма предварительной регистрации рейтингового турнира |