Мой код (Показать/Скрыть)
program Norm;
uses crt,graph;
type zap=record
x,y:real
end;
masZ=array [1..1000] of zap;
var rez,a,m,x:real;
FrSV:masZ;
GenSV:masZ;
F1,F2:text;
st1,st2:string;
j,w,t,i,n:integer;
h1,h2,h:real;
con,d:real;
u:integer;
dt,dl,ch:array [1..5] of integer;
ch1:array [1..5] of real;
procedure sort(var M:masZ);
var v:zap;
k,i,j:integer;
begin
for i:=1 to (n-1) do
begin
k:=i;
for j:=(i+1) to n do
if M[j].x<M[k].x then k:=j;
v:=M[i];
M[i]:=M[k];
M[k]:=v
end
end;
procedure Grafiki;
var k,e:integer;
xk1,yk1:integer;
xk2,yk2:integer;
r:real;
begin
clrscr;
k:=Detect;
InitGraph(k,e,'C:\BP\BGI');
SetColor(1);
Line(29,0,29,450);
Line(29,450,639,450);
PutPixel(29,50,4);
PutPixel(29,450,4);
PutPixel(429,450,4);
PutPixel(229,450,4);
PutPixel(629,450,4);
setcolor(1);
setlinestyle(2,0,1);
line(29,50,639,50);
line(229,450,229,0);
line(429,450,429,0);
outtextxy(20,5,'Y');
outtextxy(630,455,'X');
outtextxy(25,455,'O');
outtextxy(20,45,'l');
outtextxy(433,440,'l');
setcolor(6);
outtextxy(29+round(400*m),455,'mat-ojid');
line(29+round(400*m),450,29+round(400*m),0);
SetBkColor(15);
r:=400;
SetLineStyle(0,0,2);
SetColor(3);
line(29,450,29+round(r*FrSV[1].x),450-round(r*FrSV[1].y));
for i:=2 to n do {Teor.Sl.Vel}
begin
xk1:=29+round(r*FrSV[i-1].x);
yk1:=450-round(r*FrSV[i-1].y);
xk2:=29+round(r*FrSV[i].x);
yk2:=450-round(r*FrSV[i].y);
line(xk1,yk1,xk2,yk2);
end;
SetLineStyle(0,0,2);
SetColor(4);
line(29,450,29+round(r*GenSV[1].x),450-round(r*GenSV[1].y));
for i:=2 to n do {Generir. Sl.Vel}
begin
xk1:=29+round(r*GenSV[i-1].x);
yk1:=450-round(r*GenSV[i-1].y);
xk2:=29+round(r*GenSV[i].x);
yk2:=450-round(r*GenSV[i].y);
line(xk1,yk1,xk2,yk2);
end;
readkey;
CloseGraph
end;
begin
clrscr;
randomize;
write('vvedite N => ');
readln(n);
write('vvedite mat.ojidanie m => ');
readln(m);
h:=1/n;
GenSV[1].y:=0;
for i:=1 to n do
begin
a:=-6;
for j:=1 to 12 do a:=a+random;
GenSV[i].x:=m+a*m/5;
end;
Sort(GenSV);
for i:=2 to n do
GenSV[i].y:=GenSV[i-1].y+h;
if GenSV[n].x>1 then h:=1.5/n
else h:=1/n;
FrSV[1].x:=0;
FrSV[1].y:=0;
con:=5/(m*sqrt(2*pi));
for i:=2 to n do
begin
FrSV[i].x:=FrSV[i-1].x+h;
h1:=exp(-sqr(FrSV[i-1].x-m)/(2*sqr(m/5)));
h2:=exp(-sqr(FrSV[i].x-m)/(2*sqr(m/5)));
d:=(h1+h2)/2;
FrSV[i].y:=(h*d*con)+FrSV[i-1].y;
end;
writeln;
write('vvedite imja faila s sgenerir.sl.vel. => ');
readln(st1);
write('vvedite imja faila s teoret.znach. => ');
readln(st2);
assign(f1,st1);
rewrite(f1);
assign(f2,st2);
rewrite(f2);
for i:=1 to n do
begin
writeln(f1,GenSV[i].x:8:5,' ' ,GenSV[i].y:8:5);
writeln(f2,FrSv[i].x:8:5,' ',frSV[i].y:8:5)
end;
Grafiki;
close(F1);
close(F2);
end.