![]() |
|
#16
|
|||
|
|||
![]() огромное вам спасибо!
|
#17
|
|||
|
|||
![]() попробывал ваш код, норм запустилось, продолжил работу и опять наткнулся на эту же ошибку.
Код:
unit Diagnoz; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; Label2: TLabel; Label3: TLabel; Edit2: TEdit; Label5: TLabel; Edit3: TEdit; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Edit11: TEdit; Edit12: TEdit; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} type MASK = array[1..8192] of real; MASKCP = array[1..8192] of real; {X, Y} MASKD = array [1..500] of string; mas3 = array[1..50] of real; mascpptr = ^maskcp; var S, I, JJ, J, K, MM, MP, M : integer; AX, A, F: MASK; MPP, TEXT : string; DataFile : file; AAS : mas3; xx : byte; X, Y: mascpptr; KM, DF : real; SS : MASKD; KD : longint; WOB, TPPR, L, FD, ND, TIP: integer; myfile : textfile; const jjk = 2; FMAX = 11025/2; N = 12; Procedure SUMGARM(var AX : mask; KN1, KV1 : integer; SYG: real); var S : real; begin S := 0; for i := KN1 to KV1 do begin S := S + sqr(AX[i]); end; SYG := sqrt(S); end; Procedure MAXGARM(var P : mask; KNN, KVV : integer; MAXGG : integer); var MAXG, MK, MAX : real; IM: integer; begin MK :=P[KNN]; IM := KNN; MAXG := FMAX * (KM / 2) / K * IM; for i := KNN to KVV do begin if P[i] > MK then begin MK := P[i]; IM := I; MAXG := FMAX * (KM / 2) / K * IM; end; end; MAXGG := round(MAXG / F[1]); end; procedure TForm1.Button1Click(Sender: TObject); var SO, NOM : string; ANED : real; data,datai : array [1..3] of integer; Asr : array [1..10] of integer; K : integer; begin SO := Edit1.Text; WOB := StrToInt(Edit2.Text); TPPR := StrToInt(Edit3.Text); ANED := StrToFloat(Edit4.Text); L := StrToInt(Edit5.Text); FD := StrToInt(Edit6.Text); ND := StrToInt(Edit7.Text); TIP := StrToInt(Edit9.Text); Asr[1] := StrToInt(Edit10.Text); data[1] := StrToInt(Edit8.Text); data[2] := StrToInt(Edit11.Text); data[3] := StrToInt(Edit12.Text); Label2.Caption := 'Объект диагностирования: ' + SO + #13 + 'Число оборотов в минуту: ' + IntToStr(WOB) + #13 + 'Наработка до ремонта составляет: ' + IntToStr(TPPR) + ' дней ' + #13 + 'Предельно допустимый уровень вибраций: ' + FloatToStr(ANED) + ' мм/с' + #13 + 'Количество диагностируемых дефектов: ' + IntToStr(L) + #13 + 'Частота диагностирования: ' + IntToStr(FD) + ' Гц' + #13 + 'Количество датчиков: ' + IntToStr(ND) + #13 + 'Дата проведения исходных измерений: ' + IntToStr(data[1]) + '.' + IntToStr(data[2]) + '.' + IntToStr(data[3]) + #13 + 'Количество замеров: ' + IntToStr(TIP) + #13 + 'Суммарный уровень по датчику (мм/с): ' + IntToStr(Asr[1]); end; procedure TForm1.Button2Click(Sender: TObject); var F : File; I, J : Integer; XX : Byte; begin mpp := '1'; ss[kd] := '1w'; {$I-} AssignFile(F, ss[kd] + mpp + '.wav'); Reset(F, 1); if IOResult = 0 then begin Seek(F, 50); for I := 1 to jjk do for J := 1 to 4096 do begin BlockRead(F, XX, 1); X[J] := XX; end; CloseFile(F); end; {$I+} end; end. Последний раз редактировалось deniks, 17.03.2012 в 00:37. |
#18
|
|||
|
|||
![]() вот еще код выложу программы на паскаль, которую переделываю
Код:
{ Diagnostika nasosa } {$N+} uses crt,graph,bmp_plus,Windos; const jjk=2;{L=5;}n=12;pkr=100;fmax=11025/2; {alf1=0.5;} type mascp=array[1..{2048}4096] of single ; mask=array[0..{1024}2048] of single ; mascpptr=^mascp; mas=array[1..20,0..30] of single; mast=array[0..30] of single; masL=array[1..10] of single; mas3=array[0..10] of single; masd=array [1..3] of integer; masf=array [1..10] of text; maskd=array [0..10] of string; maskdd=array [1..10] of single; masust=array [1..4] of single; var ans,no,yes, ch: char; xx: byte; datafile : file of byte; frr,fr,fp, fpi: text;s,mpp,fname,ds:string; kdj1,kdj,kj,kj1, kd, nd, ig, tip, jj, mp, kn,kv, cnt,m:integer; data,datai: masd; sabb, sgarm, ss: maskd;Fs, Asr :maskdd;ficx: masf; AAs:mas3; alfa,xxk, betdd,prd, MinTr,{Mintrem,} Minn11,MinTrl1,al :maskdd; const Au : masust = (0.25,0.41,0.63,1); var dt,a,f,xk:mask; x,y:mascpptr; ygg, yss, yg,Fg:mas; Ft,skrat, Ygpr: masL; Tx,as,asi : mast; StTr,Tr,Tr1,n1,Tr2,n2,alfs,bets,alff,bet,Votn,Votn1,alffa,alf,Fdd,Tremm, n11, nn,TTTr,Trl1: masL; ftk,fm,fv,d,kftk,kfn,kfv,dtk,dv,dn,z,df,km,Wob,Asned,lx,ly, Sa,Tcrj,Trj,AprS,STrl1,bt,yys,ysa,fd,Tppr, sygg,kper,Pikfak,Ass,Ys,Fdv,Fk,mx,skx, wob1,maxx,sx,sy, Aaotn,Apr,Ao,MaxFdd,MaxFs,Mints,Mintls,MinTrr: single; kjj, ttr, mm, nm, i,j,k,L: integer; func,sd,sd1:string; Gd,Gm,Xc,Xb,Yc,Yb:integer; ii, dlinaOsiX,dlinaOsiY:integer; Procedure Sumgarm(var Ax : mask; kn1,kv1 :integer; var SYg: single); var s: single; i : integer; Begin s:=0; for i:=kn1 to kv1 do begin s:=S+sqr(ax[i]); { sy:=Sy+ay[i];} end; SYg:=sqrt(s); End; Procedure Maxgarm(var P:mask; knn,kvv: integer; var maxgg:integer); var maxg,mk,max:single;im :integer; begin mk:=P[knn]; im:=knn; maxg:=fmax*(km/2)/k*im; For i:=knn to kvv do begin if p[i]>mk then begin mk:=p[i]; Max:=mk; im:=i; Maxg:=fmax*(km/2)/k*im; end; end; maxgg:=round(maxg/f[1]); end; Procedure Podshipnik(var wob2 : single; var aF: masL; var awob: single); var Am,maxf:single; im:integer; Function Max(var p: mask):single; var mk:single; knn,kvv :integer; begin knn:=round(0.9*wob2/60/f[1]); kvv:=round(1.1*wob2/60/f[1]); mk:=P[knn]; im:=knn; maxf:=fmax*(km/2)/k*im; For i:=knn to kvv do begin if p[i]>mk then begin mk:=p[i]; Max:=mk; im:=i; Maxf:=fmax*(km/2)/k*im; end; end; end; begin Am:=Max(a); awob:=maxf*60; For i:=1 to L do aF[i]:=maxf*skrat[i]; end; Procedure BuildP(var AA,tt:mask; Ft: masL; wob11,w :single; fname: string); var Fg: masL; fgr, amin,fmin,Amax,Fmaxx : single; a1,t1: mas3;kf,k1: integer; Function Max(var p: mask):single; var mk:single; begin mk:=P[1]; For i:=2 to k do if p[i]>mk then mk:=p[i]; Max:=mk; end; Function Min(var pp: mask): single; var mmk:single; begin mmk:=PP[1]; For i:=2 to k do if pp[i] < mmk then mmk:=pp[i]; Min:=mmk; end; begin if w=2 then begin Amin:=Min(aa); if Amin <= 0 then begin for i:=1 to k do aa[i]:=aa[i]+abs(Amin); end else begin for i:=1 to k do aa[i]:=aa[i]; end; Fmaxx:=tt[k]; Amax := Max(aa); end; if w=1 then begin Fmaxx:=1.05*fd; Amax := Max(aa); end ; Gd:=Detect; InitGraph(Gd,Gm,'C:\PASCAL\BGI'); if GraphResult <> grok then halt(1); SetBkColor(15); Xc:=100; Xb:=(GetMaxX div 2); Yc:=420;Yb:=50; dlinaOsiX:=500; dlinaOsiY:=400; ly:=dlinaOsiY/(1.1*Amax); lx:=dlinaOsiX/Fmaxx*0.9; SetColor(8); Line(Xc,Yc,Xc+dlinaOsiX,Yc); Line(Xc,Yc,Xc,Yc-dlinaOsiY); OutTextXY(xc-20,yc-dlinaOsiY-10,'A '); if w=2 then OutTextXY(xc+dlinaOsiX-10,yc-14,'T,c') else OutTextXY(xc+dlinaOsiX-40,yc-14,'f,ѓж'); for i:=0 to 10 do begin t1[i]:=(Fmaxx )/10*(i); Line(Xc+round(t1[i]*lx),Yc-2, Xc+round(t1[i]*lx),Yc+2); if (w=2) then str(t1[i]:2:2,sd) else str(t1[i]:2:0,sd); OutTextXY(Xc+round(t1[i]*lx),Yc+6,sd); end; for i:=0 to 10 do begin a1[i]:=Amax/10*i; Line(Xc-2,Yc-round(a1[i]*ly), Xc+2,Yc-round(a1[i]*ly)); str(a1[i]:2:3,sd1); OutTextXY(Xc-46,Yc-round(a1[i]*ly),sd1); end; if w <> 2 then begin SetColor(red); fmin:=0; for j:=1 to L do begin kn:=round(0.9*Ft[j]/f[1]); kv:=round(1.1*Ft[j]/f[1]); Maxgarm(A,kn,kv,ig); Fg[j]:=f[ig]; if (Fg[j]-fmin) > 0 then begin Line(Xc+round((Fg[j]-fmin)*lx),Yc,Xc+round((Fg[j]-fmin)*lx),Yc-dlinaOsiY); OutTextXY(xc-25+round((Fg[j]-fmin)*lx),yc-dlinaOsiY-round(10*0.1*j), sabb[j]); SetColor(blue); str(Fg[j]:3:0,sd); OutTextXY(Xc+round((Fg[j]-fmin)*lx)-15,Yc+17,sd); end; end;end; SetColor(8); if w=2 then k1:=k; if (w=1) or (w=3) then k1:=round(fd*1.05/f[1]); MoveTo(Xc + round(tt[1]*lx),Yc-round(aa[1]*ly)); for i:=2 to k1 do begin SetColor(Green); LineTo(Xc + round(tt[i]*lx),Yc-round(aa[i]*ly)); end; { save_bmp(1,1,640,480,fname,4); } ReadKey; CloseGraph; End; procedure Spektr(var AX, AY; Dim: Word; D: Integer); var x: array [1..4096] of Single absolute AX; y: array [1..4096] of Single absolute AY; I, J, N, L, K, LE, LE1,IP, NV2, NM1: Integer; Arg, U1, U2, U3, C, S, T1, T2, T3, T4: Single; begin N := 1 shl Dim; if D = -1 then FillChar(Y, N*SizeOf(Single), 0); for L := 1 to Dim do begin LE := 1 shl (Dim+1-L); LE1 := LE div 2; U1 := 1; U2 := 0; Arg := Pi/LE1; C := Cos(Arg); S := D*Sin(Arg); for J := 1 to LE1 do begin I := J; while I <= N do begin IP := I + LE1; T1 := X[i] + X[IP]; T2 := Y[i] + Y[IP]; T3 := X[i] - X[IP]; T4 := Y[i] - Y[IP]; X[IP] := T3*U1 - T4*U2; Y[IP] := T4*U1 + T3*U2; X[i] := T1; Y[i] := T2; I := I + LE; end; U3 := U1*C - U2*S; U2 := U2*C + U1*S; U1 := U3; end; end; NV2 := N div 2; NM1 := N-1; J := 1; for I := 1 to NM1 do begin if I < J then begin T1 := X[J]; T2 := Y[J]; X[J] := X[i]; Y[J] := Y[i]; X[i] := T1; Y[i] := T2; end; K := NV2; while K < J do begin J := J - K; K := K div 2; end; J := J + K end; if D = 1 then Exit; for I:=1 to N do begin X[i] := X[i] / N*2; Y[i] := Y[i] / N*2; end; X[1] := 0; end; |
#19
|
|||
|
|||
![]() Код:
Procedure DiagnozDef (var tr2: masL; var Fd:masL; var trl1,Votn: masL); var fd1 : array [1..4] of real; jd,md : integer; tcr1:single; Begin Writeln(''); Writeln(' Harakteristika defektov '); Writeln(' mashinu'); Writeln ; writeln(' na ',data[1]:2,'.',data[2]:2,'.',data[3]:4,'Ј.'); Writeln; Writeln(fr,'') ; Writeln(fr,' Harakteristika defektov mashinu'); writeln(fr,' na ',data[1]:2,'.',data[2]:2,'.',data[3]:4,'Ј.'); Writeln(FR,''); for i:= 1 to 4 do Fd1[i]:=0.5*Au[i]+0.5*Au[i]; for j:=1 to L+1 do begin Writeln(' ',sgarm[j],':'); Writeln(fr,' ',sgarm[j],':'); if (Fd[j] >= 0) and (Fd[j] < Fd1[1]) then Writeln('-defekt otsutstvuet, ') else begin Write('-stepen razvitiya defekta* - '); if (Fd[j] >= Fd1[1]) and (Fd[j] < Fd1[2]) then Writeln('nige srednei, '); if (Fd[j] >= Fd1[2]) and (Fd[j] < Fd1[3]) then Writeln('srednyaa, '); if (Fd[j] >= Fd1[3]) and (Fd[j] < Fd1[4]) then Writeln('vuwe srednei, '); if (Fd[j] >= Fd1[4]) {or (tttr[j]=tx[m]/1.1)} then Writeln('nedopust, '); if (fd[j] < Fd1[4]) and (m > 2) then begin writeln('-stepen povregdennosti -', (1-exp(-tx[m]/tr2[j]))*100:5:2,' %'); Write('-skorost razvitiya defekta -'); if (Votn[j] > 0) and (Votn[j] < Fd1[2]{*1.56}) then Writeln(' medlennaya, '); if (Votn[j] >= Fd1[2]{*1.56}) and (Votn[j] < Fd1[3]{*1.56}) then Writeln(' umerennaya, '); if (Votn[j] >= Fd1[3]{*1.56}) and (Votn[j] < Fd1[4]{*1.56}) then Writeln(' bustraya, '); if (Votn[j] >= Fd1[4]{*1.56}) then Writeln(' predelnaya, '); end; end; if m > 2 then begin IF tR2[j]>2*tppr then Tr2[j]:=2*Tppr else Tr2[j]:=Tr2[j]; Trl1[j]:=tx[m]*(1-exp(-tx[m]/tr2[j]))+Tr2[j]*exp(-tx[m]/tr2[j]); if trl1[j]>=tr2[j] then trl1[j]:=0.95*tr2[j] else trl1[j]:=trl1[j]; if Fd[j] >= Fd1[4] then begin writeln('-stepen povregdennosti -100 %'); writeln('-narabotka uzla mawunu do ostanovki na remont iz-za'); writeln(' razvitiya defekta sostavlyaet: 0, sut.' ); writeln(''); end; if Fd[j] < Fd1[4] then begin writeln('-narabotka uzla mawunu do ostanovki na remont iz-z'); writeln(' razvitiya defekta sostavlyaet: ',(trl1[j]-tx[m]):5:1,' - ',(Tr2[j]-tx[m]):5:1,' cгв.,' ); end; end; { else} writeln(''); Readkey; if (Fd[j] >= 0) and (Fd[j] < Fd1[1]) then Writeln(fr,'-defekt otsutstvuet, ') else begin Write(fr,'-stepen razvitiya defekta -'); if (Fd[j] >= Fd1[1]) and (Fd[j] < Fd1[2]) then Writeln(fr,' nige srednei, '); if (Fd[j] >= Fd1[2]) and (Fd[j] < Fd1[3]) then Writeln(fr,' srednyaa, '); if (Fd[j] >= Fd1[3]) and (Fd[j] < Fd1[4]) then Writeln(fr,' vuwe srednei, '); if (Fd[j] >= Fd1[4]) or (tr2[j]=tx[m]/1.05) then Writeln(fr,' predelnaya, '); if (fd[j] < Fd1[4]) and (m > 2) then begin writeln(fr,'-stepen povregdennosti - ', (1- exp(-tx[m]/tr2[j]))*100:5:2,' %'); Write(fr,'-skorost razvitiya defekta - '); if (Votn[j] > 0) and (Votn[j] < Fd1[2]) then Writeln(fr,' medlennaya, '); if (Votn[j] >= Fd1[2]) and (Votn[j] < Fd1[3]) then Writeln(fr,'umerennaya, '); if (Votn[j] >= Fd1[3]) and (Votn[j] < Fd1[4]) then Writeln(fr,'bustr, '); if (Votn[j] >= Fd1[4]) then Writeln(fr,'predelnaya, '); end; end; if m > 2 then begin writeln(fr,'Fd=',Fd[j]:5:5); if Fd[j] >= Fd1[4] then begin writeln(fr,'-stepen povregdennosti -100 %'); writeln(fr,'-narabotka mawunudo ostanovki na remont iz-za'); writeln(fr,' razvitiya defekta sostavlyaet: 0, sut.' ); end; if Fd[j] < Fd1[4] then begin writeln(fr,'-narabotka mawunu do ostanovki na remont'); writeln(fr,' iz-za razvitiya defekta: ',(trl1[j]-tx[m]):5:1,' - ',(Tr2[j]-tx[m]):5:1,' cгв.,' ); end; writeln(fr,''); end; writeln(fr,''); end; END; |
#20
|
|||
|
|||
![]() Код:
Procedure DiagnozPoint(var Fssd,Tcrj1,Trj1 :single; var txx:mast; kj,kjj: integer); { OЇаҐ¤Ґ«Ґ*. ¤Ё Ј*®§ ¬ и. ў в®зЄҐ} var fd1 : array [2..4] of real; Begin for i:= 2 to 4 do Fd1[i]:=0.5*Au[i]+0.5*(0.5*Au[i]+0.5*Au[i]); Writeln ; Write(' DIAGNOS MAWUNU '); Writeln ; writeln(' na ',data[1]:2,'.',data[2]:2,'.',data[3]:4,'g.'); Writeln; if (Fssd >= 0) and (Fssd < Fd1[2]) then Writeln('Mawuna v ispravnom sostoyanii '); if (Fssd >= Fd1[2]) and (Fssd < Fd1[3]) then Writeln('MAwuna v rabotosposobnom sostoyanii. '); if (Fssd >= Fd1[3]) and (Fssd < Fd1[4]) then begin Writeln('Mawune trebuetsya remont. '); Writeln(' ЏаЁзЁ* : - ',sgarm[kj]); end; if (Fssd >= Fd1[4]) then begin Writeln('Mawuna podlegut remontu. '); Writeln(' Pri4ina : - ',sgarm[kj]); end; if m > 2 then begin IF tRj1>= 2*tppr then begin Trj1:=2*Tppr; Tcrj1:=txx[m]*(1-exp(-txx[m]/trj1))+Trj1*exp(-txx[m]/trj1); end; {else} IF tRj1 < 2*tppr then begin Tcrj1:=Tcrj1; Trj1:=Trj1; end; if (Fssd >= Fd1[4]) then begin writeln('-* а Ў®вЄ г§« ¬ иЁ*л ¤® ®бв *®ўЄЁ * ६®*в '); writeln(' б®бв ў«пҐв: 0 , cгв.' ); end; if (Fssd < Fd1[4]) then begin if {(Fssd < Fd1[3]) or }(kj=kjj) then begin writeln('-* а Ў®вЄ ¬ иЁ*л ¤® ६®*в '); writeln('б®бв ў«пҐв:',(Tcrj1-tXx[m]):5:1,' - ',(Trj1-tXx[m]):5:1,' cгв.' ); end; if (kj<>kjj) and (Fssd >= Fd1[3]) then begin writeln('Ё§-§ ЇаҐўлиҐ*Ёп ЇаҐ¤Ґ«м*® ¤®ЇгбвЁ¬®Ј® га®ў*п'); writeln('Ј ମ*ЁЄЁ, ॠЈЁаго饩 * ¤ **л© ¤ҐдҐЄв.'); writeln('ђҐбгаб ®Ја *ЁзЁў Ґв ¤ҐдҐЄв: ',sgarm[kjj],','); writeln('Ё§-§ Ї®ўлиҐ**®© бЄ®а®бвЁ ҐЈ® а §ўЁвЁп.'); writeln('‚ १г«мв ⥠нв®Ј® * а Ў®вЄ ¬ иЁ*л ¤® ६®*в '); writeln('б®бв ў«пҐв:',(Tcrj1-tXx[m]):5:1,' - ',(Trj1-tXx[m]):5:1,' cгв.' ); end; if (kj<>kjj) and (Fssd < Fd1[3]) then begin writeln('-* а Ў®вЄ ¬ иЁ*л ¤® ६®*в '); writeln('б®бв ў«пҐв:',(Tcrj1-tXx[m]):5:1,' - ',(Trj1-tXx[m]):5:1,' cгв.' ); end; end;end; readkey; Writeln(fr,'') ; Write(fr,' „?ЂѓЌЋ‡ ЊЂ˜?Ќ› '); Writeln(fr,'') ; writeln(fr,' * ' ,data[1]:2,'.',data[2]:2,'.',data[3]:4,'Ј.'); Writeln(fr,''); if (Fssd >= 0) and (Fssd < Fd1[2]) then Writeln(fr,'Њ иЁ* ў ЁбЇа ў*®¬ б®бв®п*ЁЁ. '); if (Fssd >= Fd1[2]) and (Fssd < Fd1[3]) then Writeln(fr,'Њ иЁ* ў а Ў®в®бЇ®б®Ў*®¬ б®бв®п*ЁЁ. '); if (Fssd >= Fd1[3]) and (Fssd < Fd1[4]) then begin Writeln(fr,'Њ иЁ*Ґ вॡгҐвбп ®б¬®ва. '); Writeln(fr,' ЏаЁзЁ* : - ',sgarm[kj]); end; if (Fssd >= Fd1[4]) then begin Writeln(fr,'Њ иЁ* Ї®¤«Ґ¦Ёв ६®*вг. '); Writeln(fr,' ЏаЁзЁ* : - ',sgarm[kj]); end; if m > 2 then begin writeln(fr,'Fss=',Fssd:5:5); if (Fssd >= Fd1[4]) then begin writeln(fr,'-* а Ў®вЄ ¬ иЁ*л ¤® ६®*в '); writeln(fr,'б®бв ў«пҐв: 0, cгв.' ); end; if (Fssd < Fd1[4]) then begin if (kj=kjj){ and (Fssd < Fd1[3])}then begin writeln(fr,'-* а Ў®вЄ ¬ иЁ*л ¤® ६®*в '); writeln(fr,'б®бв ў«пҐв:',(Tcrj1-tXx[m]):5:1,' - ',(Trj1-tXx[m]):5:1,' cгв.' ); end; if (kj<>kjj) and (Fssd >= Fd1[3]) then begin writeln(fr,'Ё§-§ ЇаҐўлиҐ*Ёп ЇаҐ¤Ґ«м*® ¤®ЇгбвЁ¬®Ј® га®ў*п'); writeln(fr,'Ј ମ*ЁЄЁ, ॠЈЁаго饩 * ¤ **л© ¤ҐдҐЄв.'); writeln(fr,'ђҐбгаб ®Ја *ЁзЁў Ґв ¤ҐдҐЄв: ',sgarm[kjj],','); writeln(fr,'Ё§-§ Ї®ўлиҐ**®© бЄ®а®бвЁ ҐЈ® а §ўЁвЁп.'); writeln(fr,'‚ १г«мв ⥠нв®Ј® * а Ў®вЄ ¬ иЁ*л ¤® ६®*в '); writeln(fr,'б®бв ў«пҐв:',(Tcrj1-tXx[m]):5:1,' - ',(Trj1-tXx[m]):5:1,' cгв.' ); end; if (kj<>kjj) and (Fssd < Fd1[3]) then begin writeln(fr,'-* а Ў®вЄ ¬ иЁ*л ¤® ६®*в '); writeln(fr,'б®бв ў«пҐв:',(Tcrj1-tXx[m]):5:1,' - ',(Trj1-tXx[m]):5:1,' cгв.' ); end; end; End; readkey; END; Procedure Diagnostika(var Ygpr:masL{; var MinTr,MinTrl1 : maskdd; Var Maxfdd:single; s: string}); begin if m > 2 then begin for j:=1 to L+1 do begin Str(j,ds); fname:=s+'4'+ds+'.bmp'; Ao:=yg[j,1]; Apr:=Ygpr[j]; Aaotn:=abs((yg[j,m]-ao)/(apr-ao)); Votn[j]:=(Tppr-tx[1])/(Tr2[j]-tx[1])*tx[j]/Tr2[j]; Fdd[j]:=0.5*Aaotn + 0.5*Votn[j]; Trl1[j]:=tx[m]*(1-exp(-tx[m]/Tr2[j]))+tr2[j]*exp(-tx[m]/Tr2[j]); writeln('T⥪=',tx[m]:5:2,''); writeln('TЇ®«*=',Trl1[j]:5:1,'...',Tr2[j]:5:1,' cyt'); writeln('Toct=',Tr2[j]-tx[m]:5:1,' cyt'); writeln('j=',j:5,''); writeln('Yg=',Yg[j,m]:5:5,''); writeln('bet=',bet[j]:5:5,''); readkey; writeln('Fd[',j,']=',Fdd[j]:5:4,' '); readkey; end; end else begin for j:=1 to L+1 do begin Fdd[j]:=Yg[j,m]/Ygpr[j]; end; End; {DiagnozDef(Tr2,Fdd,Trl1,Votn);} {‘⥯Ґ*м а §ўЁвЁп ¤ҐдҐЄв } if m > 2 then Begin bt:=Fdd[1]; kj:=1; for jj:=2 to L+1 do begin if bt < Fdd[jj] then begin bt:=Fdd[jj]; kj:=jj; { MaxFdd:=Fdd[kj];} end; end; MaxFdd:=Fdd[kj]; { MinTr[kd]:=Tr2[kj]; {гЎа вм kd} {MinTrl1[kd]:=Trl1[kj]; {гЎа вм kd} { if MaxFdd >= Au[4] then FS[kd]:= MaxFdd else } FS[kd]:=0.3*As[m]/Asned+0.7*MaxFdd; bt:=Tr2[1]; kjj:=1; for jj:=2 to L+1 do begin if bt > Tr2[jj] then begin bt:=Tr2[jj]; kjj:=jj; { Mintr[kd]:=Tr2[kjj]; MinTrl1[kd]:=Trl1[kjj];} end; end; {if Mintr[kd]>=Tr2[kj] then begin} Mintr[kd]:=Tr2[kjj]; MinTrl1[kd]:=Trl1[kjj]; {kjj:=kj; end;} end else begin Fs[kd]:=As[m]/Asned; {гЎа вм kd} MinTrl1[kd]:=1; MinTr[kd]:=1; end; DiagnozPoint(Fs[kd],MinTrl1[kd],MinTr[kd],tx,kj,kjj); { „Ё Ј*®§ ў в®зЄҐ Є®*ва®«п.} DiagnozDef(Tr2,Fdd,Trl1,Votn); End; |
#21
|
|||
|
|||
![]() Код:
BEGIN ClrScr; New(x); New(y); write('Obiekt inspekzuu - '); {read(s);} s:='2'; writeln('Elsi diagnostirovanie ishodnoe, vvedite 1,tekuwee - 2 ! '); readln(tip); case tip of 1: begin Assign( fpi,s+'.dat'); ReWrite(fpi); writeln('4islo oborotov (n) v minutu ob/min: '); {readln(wob);} wob:={1480}3000; writeln(fpi,wob); writeln('Narabotka do remonta: '); {readln(Tppr);} Tppr:=365; writeln(fpi,Tppr); writeln('‚ўҐ¤ЁвҐ ЇаҐ¤Ґ«м*® ¤®ЇгбвЁ¬л© га®ўҐ*м ўЁЎа*жЁЁ: '); {readln(Asned);} Asned:=11.2; writeln(fpi,Asned); writeln('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® Є®*ва®«Ёа㥬ле ¤ҐдҐЄв®ў: '); {readln(L);} L:=6; writeln(fpi,L); for j:=1 to 1 {L} do begin {writeln('‚ўҐ¤ЁвҐ **§ў**ЁҐ ¤ҐдҐЄв* N : ',j:4,''); {readln(sgarm[j]);} sgarm[1]:='„ЁбЎ*«**б а®в®а*'; writeln(fpi,sgarm[1]); {writeln('‚ўҐ¤ЁвҐ Єа*в*®бвм Ј*ମ*ЁЄЁ, аҐ*ЈЁаго饩 ** нв®в ¤ҐдҐЄв : '); {readln(skrat[j]);} skrat[1]:=1; writeln(fpi,skrat[j]); {writeln(' Ё ҐҐ *ЎЎа*ўЁ*вгаг : ');} readln(sabb[1]); sabb[1]:='¤'; writeln(fpi,sabb[1]); sgarm[2]:='ђ*бжҐ*ва®ўЄ* а®в®а* б ЇаЁў®¤®¬'; writeln(fpi,sgarm[2]); skrat[2]:=2; writeln(fpi,skrat[2]); sabb[2]:='а'; writeln(fpi,sabb[2]); sgarm[3]:='?§*®б **аг¦*®© ®Ў®©¬л Ї®¤иЁЇ*ЁЄ* Є*зҐ*Ёп'; writeln(fpi,sgarm[3]); skrat[3]:=3; writeln(fpi,skrat[3]); sabb[3]:='Ё.*.' ; writeln(fpi,sabb[3]); sgarm[4]:='?§*®б ў*гваҐ**Ґ© ®Ў®©¬л Ї®¤иЁЇ*ЁЄ* Є*зҐ*Ёп'; writeln(fpi,sgarm[4]); skrat[4]:=5; writeln(fpi,skrat[4]); sabb[4]:='Ё.ў.'; writeln(fpi,sabb[4]); sgarm[5]:='?§*®б «®Ї*в®Є а*Ў®зҐЈ® Є®«Ґб*'; writeln(fpi,sgarm[5]); skrat[5]:=7; writeln(fpi,skrat[5]); sabb[5]:='Ё.«.'; writeln(fpi,sabb[5]); sgarm[6]:='?§*®б ¬гдвл б楯«Ґ*Ёп б ЇаЁў®¤®¬'; writeln(fpi,sgarm[6]); skrat[6]:=4; writeln(fpi,skrat[6]); sabb[6]:='Ё.¬.'; writeln(fpi,sabb[6]); {sgarm[7]:='ЌҐЁ§ўҐбв*л©'; writeln(fpi,sgarm[7]); skrat[7]:=18; writeln(fpi,skrat[7]); sabb[7]:='*.'; writeln(fpi,sabb[7]);} end; sgarm[L+1]:='"Џа®зЁҐ" ¤ҐдҐЄвл'; writeln(fpi,sgarm[L+1]); writeln('‚ўҐ¤ЁвҐ ¬*ЄбЁ¬*«м*го з*бв®вг ¤Ё*Ј*®бвЁа®ў**Ёп (ў ѓж): '); {readln(fd);} fd:=530; writeln(fpi,fd); writeln('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® ¤*взЁЄ®ў: '); {readln(nd);} nd:=1; writeln(fpi,nd); writeln('‚ўҐ¤ЁвҐ ®Ў®§**зҐ*Ёп ¤*взЁЄ®ў: '); for jj:=1 to nd do begin {readln(ss[jj])}; ss[jj]:='1w'; writeln(fpi,ss[jj]); Assign( fp,ss[jj]+'.dat'); ReWrite(fp); end; m:=1; mp:=1; writeln(fpi, mp); writeln(fpi, m); writeln('‚ўҐ¤ЁвҐ ¤Ґ*м ¬Ґбпж Ё Ј®¤ Їа®ўҐ¤Ґ*Ёп Ёб室*ле Ё§¬ҐаҐ*Ё© (10 11 2004) '); for i:=1 to 3 do readln(data[i]); writeln('‚ўҐ¤ЁвҐ ¤Ґ*м, ¬Ґбпж Ё Ј®¤ ўЄ«озҐ*Ёп ¬*иЁ*л ў а*Ў®вг (10 11 2004), '); writeln('Ґб«Ё ¤*в* б®ўЇ*¤*Ґв б Ёб室*л¬Ё Ё§¬ҐаҐ*Ёп¬Ё, в® Ї®ўв®аЁвҐ ¤*вг (10 11 2004) '); for i:=1 to 3 do begin readln(datai[i]); writeln(fpi,datai[i]); end; end; 2: begin Assign( fpi,s+'.dat'); Reset(fpi); readln(fpi,wob); readln(fpi,Tppr); readln(fpi,Asned); readln(fpi,L); for j:=1 to L do begin readln(fpi,sgarm[j]); readln(fpi,skrat[j]); readln(fpi,sabb[j]); end; readln(fpi,sgarm[L+1]); readln(fpi,fd); readln(fpi,nd); for i := 1 to nd do readln(fpi,ss[i]); Readln(fpi, mp); Readln(fpi, m); m:=m+1; mp:=mp+1; Readln(fpi,datai[1]); Readln(fpi,datai[2]); Readln(fpi,datai[3]); writeln('Vvedite den mesyaz i god provedeniya izmereniy (10 11 2004) '); for i:=1 to 3 do readln(data[i]); end; end; writeln('tip=',tip:5,''); writeln(mp:5,' -®ЎйҐҐ Є®«ЁзҐбвў® §*¬Ґа®ў.'); writeln(m:5,' -®Ја**ЁзҐ**®Ґ Є®«ЁзҐбвў® §*¬Ґа®ў.'); writeln('nd=',nd:5,''); readkey; for kd:=1 to nd do begin Assign( fp,ss[kd]+'.dat'); reset(fp); writeln('‚ўҐ¤ЁвҐ б㬬*а*л© га®ўҐ*м ўЁЎа*жЁЁ ў ¬¬/б,§*ॣЁбваЁа®ў***л©'); write ('Ї® ¤*взЁЄг ',ss[kd],' '); readln(Asr[kd]); if m=1 then begin tx[m]:=0; As[m]:=0; for j:= 1 to L+1 do Yg[j,m]:=0; end else begin for cnt := 1 to m-1 do begin Readln(fp, tx[cnt]); Readln(fp, As[cnt]); for j:= 1 to L+1 do Readln(fp, Yg[j,cnt]); for j:= 1 to L do Readln(fp,Fg[j,i]); end; end; str(mp,mpp); tx[m]:=(data[1]-datai[1])+(data[2]-datai[2])*30.5+(data[3]-datai[3])*365; if tx[m]>=Tppr then begin writeln ('‚*Ё¬**ЁҐ ! ’ҐЄгй*п **а*Ў®вЄ* ',tx[m],5:1,' ЇаҐўлбЁ«* **а*Ў®вЄг ¤® ЏЏђ'); writeln ('“ўҐ«ЁзЁвм **а*Ў®вЄг ¤® ЏЏђ ? …б«Ё ¤*, в® ўўҐ¤ЁвҐ 1, *Ґв - 2'); readln (ttr); if ttr=1 then {begin writeln ('‚ўҐ¤ЁвҐ *®ўго **а*Ў®вЄг ¤® ЏЏђ, ЇаҐ¦*пп а*ў*п«*бм - ', Tppr:5:1,''); readln (Tppr); end; if ttr=2 then halt(1); } end; Assign(DataFile,ss[kd]+mpp+ '.wav'); Reset(DataFile); seek(DataFile, 50); AAs[0]:=0; for i:=1 to k do A[i]:=0; for jj:=1 to jjk do begin for i := 1 to 4096 do begin Read(DataFile, Xx); X^[i]:=xx/1; end; mm:=round(exp(n*ln(2))); k:=round(mm/2); df:=Round(wob/60*mm/(2*fmax)); km:=wob/60*mm/(fmax*df); f[1]:=fmax*(km/2)/k; for I:=1 to k do begin Xk[i]:=x^[i]; dt[i]:=1/(km*fmax)*i; end; {22 Str(jj,ds); fname:=s+'1'+ds+'.bmp'; BuildP(xk,dt,Ygpr,wob1,2,fname); } for i:=1 to mm do y^[i]:=0; Spektr(x^,y^,N, -1); Sx:=0; Sy:=0; f[1]:=fmax*(km/2)/k; for i:=1 to k do begin A[i]:=(A[i]*(jj-1)+sqrt(sqr(x^[i])+sqr(y^[i])))/jj; Sx:=Sx+(x^[i])/round(fd/f[1]); Sy:=Sy+(y^[i])/round(fd/f[1]); end; AAs[jj]:=(AAs[jj-1]*(jj-1)+sqrt(sqr(Sx)+sqr(Sy))*round(fd/f[1]))/jj; for i := 1 to k do f[i]:=fmax*(km/2)/k*i; end;{Ї® jj} Close(DataFile); Asi[m]:=AAs[jjk]; As[m]:=Asr[kd]; {Sa:=0; for i := 1 to round(fd/f[1]) do begin Sa:=Sa+sqr(A[i]); end; } Sa:=Asi[m]{sqrt(sa)}; writeln('Sa=',Sa:5:3,' summa po A[i] do korektirovki '); writeln('Asi=',aSi[m]:5:3,'summa po sx+sy '); writeln('mm', mm); writeln('k', k); writeln('df', df); readkey; { for i := 1 to round(fd/f[1]) do begin A[i]:=A[i]*As[m]/Sa; f[i]:=fmax*(km/2)/k*i; end; Sa:=0; for i := 1 to round(fd/f[1]) do sA:=sa+sqr(A[i]); Sa:=sqrt(sa); writeln('Sa=',Sa:5:3,' б㬬* Ї® A[i] Ї®б«Ґ Є®а४вЁа®ўЄЁ ! '); writeln('As=',aS[m]:5:3,' Ё§¬ҐаҐ**®Ґ §**зҐ*ЁҐ '); readkey;} writeln('Posle osredneniya ! '); Podshipnik(wob,Ft,wob1); for j:=1 to L do begin kn:=round(0.98*Ft[j]/f[1]); kv:=round(1.05*Ft[j]/f[1]); Maxgarm(A,kn,kv,ig); Fg[j,m]:=ig*f[1]; kn:=round(ig-3); kv:=round(ig+3); Sumgarm(A,kn,kv,SYgg); Yg[j,m]:=SYgg; end; Ys:=0; for i:=1 to L do Ys:=Ys+sqr(Yg[i,m]); Sa:=sqr(Sa); if Sa<Ys then Sa:=1.05*Ys else Sa:=Sa; Yg[L+1,m]:=sqrt(Sa-Ys); for i:=1 to L+1 do Yg[i,m]:=Yg[i,m]*As[m]/sqrt(Sa); for i:=1 to k do A[i]:=A[i]*As[m]/sqrt(Sa); yYs:=0; for i:=1 to L+1 do begin yYs:=yYs+sqr(Yg[i,m]); end; yys:=sqrt(yYs); writeln('YS=',yyS:5:5, ' - Ygбг¬. Ї®б«Ґ Є®а४вЁа®ўЄЁ ( б гзҐв®¬ Їа®зЁе)'); writeln('As=',aS[m]:5:5, ' - As[m] -Ё§¬ҐаҐ**®Ґ §**зҐ*ЁҐ '); readkey; writeln('t=',tx[m]:5:5, ' -**а*Ў®вЄ* '); writeln('fob=',wob1/60:5:5, '-®Ў®а®вл !!! '); writeln('As=',as[m]:5:5, ' -бг¬. га®ўҐ*м.'); for j:=1 to L+1 do writeln('Ag=',Yg[j,m]:5:5,' - ', sgarm[j] ); for j:=1 to L do writeln('Fg=',fg[j,m]:5:1,' - ', Sgarm[j],' , ѓж' ); readkey; fname:=s+'cp.bmp'; BuildP( A,f,Ft,wob1,1,fname); for i:=1 to L+1 do Ygpr[i]:=Asned/As[1]*Yg[i,1]; writeln('Asned=',asned:5:5, ' -Їа. га®ўҐ*м.'); for j:=1 to L+1 do writeln('AgЇа=',Ygpr[j]:5:4,' - ', sgarm[j] ); readkey; for i := 1 to m do Yss[1,i]:=As[i]; str (mp,mpp); Assign( fr,mpp+s+ss[kd]+'pril.prn'); rewrite(fr); Diagnostika(Ygpr{, {MinTrem,MinTr,MinTrl1,MaxFdd,s}); close(fr); if m=13 then begin As[1]:=As[1]; As[2]:=As[3]; As[3]:=As[5]; As[4]:=As[7]; As[5]:=As[9]; As[6]:=As[11]; As[7]:=As[m]; tx[1]:=tx[1]; tx[2]:=tx[3]; tx[3]:=tx[5]; tx[4]:=tx[7]; tx[5]:=tx[9]; tx[6]:=tx[11]; tx[7]:=tx[m]; for j:= 1 to L+1 do begin Yg[j,1]:=Yg[j,1]; Yg[j,2]:=Yg[j,3]; Yg[j,3]:=Yg[j,5]; Yg[j,4]:=Yg[j,7]; Yg[j,5]:=Yg[j,9]; Yg[j,6]:=Yg[j,11]; Yg[j,7]:=Yg[j,m]; end; m:=7; end; rewrite(fp); for i := 1 to m do begin writeln(fp,tx[i]); writeln(fp,as[i]); for j:= 1 to L+1 do writeln(fp,Yg[j,i]); for j:= 1 to L do writeln(fp,Fg[j,i]); writeln(fp,''); end; close(fp); {str (mp,mpp); Assign( fr,mpp+s+ss[kd]+'pril.prn'); rewrite(fr); Diagnostika(Ygpr); close(fr); } End;{Ї® зЁб«г ¤*взЁЄ®ў} rewrite(fpi); writeln(fpi,wob); writeln(fpi,Tppr); writeln(fpi,Asned); writeln(fpi,L); for j:=1 to L do begin writeln(fpi,sgarm[j]); writeln(fpi,skrat[j]); writeln(fpi,sabb[j]); end; writeln(fpi,sgarm[L+1]); writeln(fpi,fd); writeln(fpi,nd); for i := 1 to nd do writeln(fpi,ss[i]); writeln(fpi,mp); writeln(fpi,m); for i := 1 to 3 do writeln(fpi,datai[i]); for i := 1 to 3 do writeln(fpi,data[i]); close(fpi); Dispose(x); dispose(y); END. |
#22
|
|||
|
|||
![]() я совсем не програмист.. пытаюсь разобратся. но не получается чето(((
Дело в том что считывается не 1н .wav, а несколько. но даже для 1го не хочет хммм всунул ваш код для кнопки, но все-равно ошибка, мб в самой программе дело, попробую поискать... (файлы все на месте) решилось увеличением массива для X Последний раз редактировалось deniks, 17.03.2012 в 01:11. |
#23
|
||||
|
||||
![]() Выложь код в архиве вместе с wav и напиши небольшой комментарий, что для чего.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#24
|
|||
|
|||
![]() время очень поджимает, могу только выложить, без коментариев, некогда их писать.
По пути реализации столкнулся еще с 1й проблемой. Есть массив A[i] который используется в процедуре MAXGARM, но почему-то он не хочет с ним работать. (значение IG должно быть не 0 ). Код:
unit Diagnoz; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} type MASK = array[1..4096] of real; {X, Y} MASKCP = array[1..4096] of real; MASKD = array [1..500] of string; MAS3 = array[0..50] of real; MASKDD = array[0..50] of real; MAS = array[0..20,0..30] of real; MASK1 = array[0..4096] of integer; var S, I, JJ, J, K, MM, MP, M, KNN, KVV, IM, IG, KN, KV, NEIZ : integer; AX, ASR, XK, F, DT, A : MASK; SKRAT, FT : MASKCP; MPP, TEXT : string; DataFile : file; AAS, ASI : MAS3; xx : byte; X, Y : MASK; KM, DF, MK, MAXF, SX, SY, KD1, SA, WOB1, WOB, SYGG, YS, YYS, AM : real; SS : MASKD; KD : longint; TPPR, L, FD, ND, TIP: integer; myfile : textfile; AS1 : maskdd; YGG, YSS, YG, FG : MAS; const jjk = 2; FMAX = 11025/2; N = 12; Procedure SUMGARM(var AX : mask; KN1, KV1 : integer; SYGG: real); var S : real; begin S := 0; for i := KN1 to KV1 do begin S := S + sqr(AX[i]); end; SYGG := sqrt(S); end; {Procedure MAXGARM(var P : MASK1; KNN, KVV : integer; var MAXGG : integer); var MAXG, MK, MAX : real; IM: integer; begin MK :=P[KNN]; IM := KNN; MAXG := FMAX*(KM/2)/K*IM; for i := KNN to KVV do begin if P[i] > MK then begin MK := P[i]; IM := I; MAXG := FMAX*(KM/2)/K*IM; end; end; MAXGG := round(MAXG/F[1]); end; } Procedure Maxgarm(var P:mask; knn,kvv: integer; var maxgg:integer); var maxg,mk,max:single;im :integer; begin mk:=P[knn]; im:=knn; maxg:=fmax*(km/2)/k*im; For i:=knn to kvv do begin if p[i]>mk then begin mk:=p[i]; Max:=mk; im:=i; Maxg:=fmax*(km/2)/k*im; end; end; maxgg:=round(maxg/f[1]); end; procedure PODSHIPNIK(WOB2 : real; AF : MASKCP; AWOB : real); Function MAX(P : mask) : real; begin KNN := round(0.9 * WOB2 / 60 / F[1]); KVV := round(1.1 * WOB2 / 60 / F[1]); MK := P[KNN]; IM := KNN; MAXF := FMAX * (KM / 2) / K * IM; for I := KNN to KVV do begin if P[i] > MK then begin MK := P[i]; MAX := MK; IM := I; MAXF := fmax * (KM / 2) / K * IM; end; end; end; var AM, MAXF : real; IM : integer; begin AM := MAX(A); AWOB := MAXF * 60; for I := 1 to L do AF[i] := MAXF * SKRAT[i]; end; procedure Spektr(var AX, AY; Dim: Word; D: Integer); var x: array [1..16384] of real absolute AX; y: array [1..16384] of real absolute AY; I, J, N, L, K, LE, LE1,IP, NV2, NM1: Integer; Arg, U1, U2, U3, C, S, T1, T2, T3, T4: real; begin N := 1 shl Dim; if D = -1 then FillChar(Y, N*SizeOf(real), 0); for L := 1 to Dim do begin LE := 1 shl (Dim+1-L); LE1 := LE div 2; U1 := 1; U2 := 0; Arg := Pi/LE1; C := Cos(Arg); S := D*Sin(Arg); for J := 1 to LE1 do begin I := J; while I <= N do begin IP := I + LE1; T1 := X[i] + X[IP]; T2 := Y[i] + Y[IP]; T3 := X[i] - X[IP]; T4 := Y[i] - Y[IP]; X[IP] := T3*U1 - T4*U2; Y[IP] := T4*U1 + T3*U2; X[i] := T1; Y[i] := T2; I := I + LE; end; U3 := U1*C - U2*S; U2 := U2*C + U1*S; U1 := U3; end; end; NV2 := N div 2; NM1 := N-1; J := 1; for I := 1 to NM1 do begin if I < J then begin T1 := X[J]; T2 := Y[J]; X[J] := X[i]; Y[J] := Y[i]; X[i] := T1; Y[i] := T2; end; K := NV2; while K < J do begin J := J - K; K := K div 2; end; J := J + K end; if D = 1 then Exit; for I:=1 to N do begin X[i] := X[i] / N*2; Y[i] := Y[i] / N*2; end; X[1] := 0; end; procedure TForm1.Button1Click(Sender: TObject); var SO, NOM : string; ANED : real; data,datai : array [1..3] of integer; Asr : array [1..10] of integer; K : integer; begin SO := Edit1.Text; WOB := StrToInt(Edit2.Text); TPPR := StrToInt(Edit3.Text); ANED := StrToFloat(Edit4.Text); L := StrToInt(Edit5.Text); FD := StrToInt(Edit6.Text); ND := StrToInt(Edit7.Text); TIP := StrToInt(Edit9.Text); Asr[1] := StrToInt(Edit10.Text); data[1] := StrToInt(Edit8.Text); data[2] := StrToInt(Edit11.Text); data[3] := StrToInt(Edit12.Text); Label2.Caption := 'Îáúåêò äèàãíîñòèðîâàíèÿ: ' + SO + #13 + '×èñëî îáîðîòîâ â ìèíóòó: ' + FloatToStr(WOB) + #13 + 'Íàðàáîòêà äî ðåìîíòà ñîñòàâëÿåò: ' + IntToStr(TPPR) + ' äíåé ' + #13 + 'Ïðåäåëüíî äîïóñòèìûé óðîâåíü âèáðàöèé: ' + FloatToStr(ANED) + ' ìì/ñ' + #13 + 'Êîëè÷åñòâî äèàãíîñòèðóåìûõ äåôåêòîâ: ' + IntToStr(L) + #13 + '×àñòîòà äèàãíîñòèðîâàíèÿ: ' + IntToStr(FD) + ' Ãö' + #13 + 'Êîëè÷åñòâî äàò÷èêîâ: ' + IntToStr(ND) + #13 + 'Äàòà ïðîâåäåíèÿ èñõîäíûõ èçìåðåíèé: ' + IntToStr(data[1]) + '.' + IntToStr(data[2]) + '.' + IntToStr(data[3]) + #13 + 'Êîëè÷åñòâî çàìåðîâ: ' + IntToStr(TIP) + #13 + 'Ñóììàðíûé óðîâåíü ïî äàò÷èêó (ìì/ñ): ' + IntToStr(Asr[1]); end; procedure TForm1.Button2Click(Sender: TObject); var DataFile : file; I, J : Integer; XX : Byte; begin mpp := '1'; ss[kd] := '1w'; AssignFile(DataFile, ss[kd] + mpp + '.wav'); Reset(DataFile, 1); Seek(DataFile, 50); AAS[0] := 0; for I:=1 to K do begin A[i] := 0; end; for JJ := 1 to jjk do begin for J := 1 to 4096 do begin BlockRead(DataFile, XX, 1); X[J] := XX; end; MM := round(exp(n*ln(2))); K := round(mm/2); DF := round(wob/60*mm/(2*fmax)); KM := wob/60*mm/(fmax*df); F[1]:=fmax*(km/2)/k; for I:=1 to K do begin XK[i] := X[i]; DT[i] := 1/(KM*FMAX)*I; end; for I := 1 to MM do y[i] := 0; SPEKTR(X,Y,N, -1); SX := 0; SY := 0; F[1] := FMAX*(KM/2)/K; for I := 1 to K do begin A[i]:=(A[i]*(jj-1)+sqrt(sqr(x[i])+sqr(y[i])))/jj; SX := SX+(X[i])/round(FD/F[1]); SY := SY+(Y[i])/round(FD/F[1]); end; AAS[jj]:=(AAS[JJ-1]*(JJ-1)+sqrt(sqr(SX)+sqr(SY))*round(FD/F[1]))/JJ; for I := 1 to K do F[i] := FMAX*(KM/2)/K;; end; CloseFile(DataFile); ASI[M] := AAS[JJK]; AS1[M] := ASR[KD]; SA := ASI[M]; Label13.Caption := 'MM: ' + IntToStr(MM) + #13 + 'K: ' + IntToStr(K) + #13 + 'DF: ' + FloatToStr(DF) + #13 + 'KM: ' + FloatToStr(KM) + #13 + 'F[1]: ' + FloatToStr(F[1]) + #13 + 'SA = ' + FloatToStr(SA) + #13 + 'ASI[M]= ' + FloatToStr(ASI[M]) + #13 + 'SX: ' + FloatToStr(SX); PODSHIPNIK(WOB,FT,WOB1); for j:=1 to L do begin kn:=round(0.98*Ft[j]/f[1]); kv:=round(1.05*Ft[j]/f[1]); Maxgarm(A,kn,kv,ig); FG[J,M] := IG * F[1]; KN := round(IG - 3); KV := round (IG + 3); SUMGARM(A, KN, KV, SYGG); YG[j,m] := SYGG; end; YS := 0; for I := 1 to L do YS := YS + sqr(YG[i,m]); SA := sqr(SA); if SA < YS then SA := 1.05 * YS else SA := SA; YG[L + 1, M] := SQRT(SA - YS); for I := 1 to L + 1 do YG[I,M] := YG[I,M] * AS1[M] / sqrt (SA); for I := 1 to k do A[i] := A[i] * AS1[M] / sqrt(SA); YYS := 0; for J := 1 to L+1 do begin YYS := YYS + sqr(YG[J,M]); end; YYS := sqrt(YYS); Label4.Caption := 'KN : ' + IntToStr(KN) + #13 + 'KV: ' + IntToStr(KV) + #13 + 'F1 := ' + FloatToStr(F[1]) + #13 + 'IG: ' + IntToStr(IG); {posle korektirovki} { Label4.Caption := 'SA = ' + FloatToStr(SA) + #13 + 'YYS= ' + FloatToStr(YYS) + #13 + FloatToStr(YG[1,1]); } end; end. |
#25
|
||||
|
||||
![]() Может я чего то не понимаю, но зачем делать так:
Код:
procedure Maxgarm(var P:mask; knn,kvv: integer; var maxgg:integer); var maxg,mk,max:single;im :integer; begin mk:=P[knn]; im:=knn; maxg:=fmax*(km/2)/k*im; For i:=knn to kvv do begin if p[i]>mk then begin mk:=p[i]; Max:=mk; im:=i; Maxg:=fmax*(km/2)/k*im; end; end; maxgg:=round(maxg/f[1]); end; Код:
function Maxgarm(knn, kvv: integer) : Integer; var maxg,mk,max:single;im :integer; begin Result := 0; mk:=A[knn]; im:=knn; maxg:=fmax*(km/2)/k*im; For i:=knn to kvv do begin if A[i]>mk then begin mk:=p[i]; Max:=mk; im:=i; Maxg:=fmax*(km/2)/k*im; end; end; Result := round(maxg/f[1]); end; ... IG := Maxgarm(kn,kv); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
deniks (20.03.2012)
|
#26
|
|||
|
|||
![]() большое спасибо, попробую вечером после работы.
|
#27
|
|||
|
|||
![]() в паскале получается IG = 79 а у меня IG=2 .. ищу ошибку дальше(
нашел что не хочет считать wob1 в процедуре PODSHIPNIK, вроде бы все значения присутствуют... странно.. попробую переделать эту процедуру Последний раз редактировалось deniks, 20.03.2012 в 22:24. |
#28
|
|||
|
|||
![]() вот переделал, значения уже показывает нормальные, что уже радует, но вопрос, правильно ли я сделал с Result и массивом?
Код:
Function PODSHIPNIK1(WOB : real) : real; var MAXF : real; IM : integer; begin Result := 0; knn:=round(0.9*wob/60/f[1]); kvv:=round(1.1*wob/60/f[1]); MK :=A[KNN]; IM := KNN; maxf:=fmax*(km/2)/k*im; for I := KNN to KVV do begin if A[i] > MK then begin IM := I; maxf:=fmax*(km/2)/k*im; WOB1 := MAXF * 60; end; end; { AM := MAX(A); } WOB1 := MAXF * 60; for I := 1 to L do begin FT[i] := MAXF * SKRAT[i]; Result := FT[i]; end; end; ... for i:=1 to L do FT[i] := podshipnik1(wob); |
#29
|
||||
|
||||
![]() У тебя получается масло-масляное. Функция возвращает значение FT[i], и принимается туда же:
Код:
Function PODSHIPNIK1(WOB : real) : real; ... Result := FT[i]; ... FT[i] := podshipnik1(wob); Смысла тогда делать функцию нет, по сути это процедура. Измени на: Код:
function PODSHIPNIK1(WOB : Single) : Single; var MAXF : Single; IM : Integer; begin Result := 0; knn := Round(0.9 * wob / 60 / f[1]); kvv := Round(1.1 * wob / 60 / f[1]); MK := A[KNN]; IM := KNN; maxf := fmax * (km / 2) / k * im; for I := KNN to KVV do begin if A[i] > MK then begin IM := I; maxf := fmax * (km / 2) / k * im; WOB1 := MAXF * 60; end; end; { AM := MAX(A); } WOB1 := MAXF * 60; for I := 1 to L do Result := MAXF * SKRAT[i]; end; ... for i:=1 to L do FT[i] := podshipnik1(wob); Код:
for I := 1 to L do Result := MAXF * SKRAT[i]; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#30
|
|||
|
|||
![]() но он работает
![]() |