if iv=4 then Form3.StringGrid2.Cells[3,j]:=FloatToStrF(mVt[iv,j],ffFixed,9,2)+'-недопустимый';
//----------------------------------Рассчет общего риска проекта
re:=TR[iv,k,ii];
min:=mVt[iv,j];
if mRt[ii,j]<min then min:=mRt[ii,j];
if mCt[k,j]<min then min:=mCt[k,j];
if re=1 then begin
A1:=0;B1:=0;K1:=0;C1:=0;
C2:=(((1-min)*(kre[2]-kre[1]))+2*kre[1])/2;
K2:=(kre[1]+kre[2])/2;
A2:=(-2/(kre[2]-kre[1]));
B2:=1+((2*kre[1])/(kre[2]-kre[1]));
end;
if re=2 then begin
A1:=2/kre[2];
B1:=-kre[1]/kre[2];
K1:=kre[1]/2;
C1:=((min*kre[2])+kre[1])/2;
C2:=(((1-min)*kre[3])+kre[2]+(min*kre[1]))/2;
K2:=(kre[2]+kre[3])/2;
A2:=(-2/(kre[3]-kre[1]));
B2:=1+((kre[1]+kre[2])/(kre[3]-kre[1]));
end;
if re=3 then begin
A1:=2/(kre[3]-kre[1]);
B1:=-(kre[1]+kre[2])/(kre[3]-kre[1]);
K1:=(kre[1]+kre[2])/2;
C1:=((min*(kre[3]-kre[1]))+kre[1]+kre[2])/2;
C2:=(((1-min)*(1-kre[2]))+kre[3]+kre[2])/2;
K2:=(kre[3]+1)/2;
A2:=(-2/(1-kre[2]));
B2:=1-((kre[2]+kre[3])/(1-kre[2]));
end;
if re=4 then begin
A1:=(2/(kre[3]-kre[2]));
B1:=-(kre[2]+kre[3])/(kre[3]-kre[2]);
K1:=(kre[2]+kre[3])/2;
C1:=((min*(kre[3]-kre[2]))+kre[2]+kre[3])/2;
C2:=1;K2:=0;A2:=0;B2:=0;
end;
vrch:=(A1*((C1*C1*C1)-(K1*K1*K1))/3);
vrch:=vrch+((B1*((C1*C1)-(K1*K1)))/2);
vrch:=vrch+(min*((C2*C2)-(C1*C1))/2);
vrch:=vrch+(A2*(((K2*K2*K2)-(C2*C2*C2)))/3)+(B2*((K2*K2)-(C2*C2))/2);
vrz:=(A1*((C1*C1)-(K1*K1))/2);
vrz:=vrz+(B1*(C1-K1));
vrz:=vrz+(min*(C2-C1));
vrz:=vrz+(A2*((K2*K2)-(C2*C2))/2)+(B2*(K2-C2));
vr:=vrch/vrz;
//----------------------
if TR[iv,k,ii]=1 then begin
if (vr<=(kre[1]/2)) or (vr>=((kre[2]+kre[3])/2)) then mvr2:=0;
if (vr>(kre[1]/2)) and (vr<((kre[1]+kre[2])/2)) then mvr2:=(2*vr-kre[1])/(kre[2]);
if (vr>=((kre[1]+kre[2])/2)) and (vr<=((kre[2]+kre[3])/2)) then mvr2:=1-((2*vr-kre[1]-kre[2])/(kre[3]-kre[1]));
if vr>=((kre[1]+kre[2])/2) then mvr1:=0;
if (vr<((kre[1]+kre[2])/2)) and (vr>C2) then mvr1:=1-(2*(vr-kre[1])/(kre[2]-kre[1]));
if vr<=C2 then mvr1:=min;
if mvr2>mvr1 then re:=2;
end;
if TR[iv,k,ii]=2 then begin
if (vr<=((kre[1]+kre[2])/2)) or (vr>=((kre[3]+1)/2)) then mvr3:=0;
if (vr>((kre[1]+kre[2])/2)) and (vr<((kre[2]+kre[3])/2)) then mvr3:=(2*vr-kre[1]-kre[2])/(kre[3]-kre[1]);
if (vr<((kre[3]+1)/2)) and (vr>((kre[2]+kre[3])/2)) then mvr3:=1-((2*vr-kre[2]-kre[3])/(1-kre[2]));
if (vr<=(kre[1]/2)) or (vr>=((kre[2]+kre[3])/2)) then mvr2:=0;
if (vr>(kre[1]/2)) and (vr<C1) then mvr2:=(2*vr-kre[1])/(kre[2]);
if (vr>=C1) and (vr<=C2) then mvr2:=min;
if (vr>=C2) and (vr<((kre[2]+kre[3])/2)) then mvr2:=1-((2*vr-kre[1]-kre[2])/(kre[3]-kre[1]));
if vr>=((kre[1]+kre[2])/2) then mvr1:=0;
if (vr<((kre[1]+kre[2])/2)) and (vr>kre[1]) then mvr1:=1-(2*(vr-kre[1])/(kre[2]-kre[1]));
if vr<=kre[1] then mvr1:=1;
if mvr1>mvr2 then re:=1;
if mvr3>mvr2 then re:=3;
end;
if TR[iv,k,ii]=3 then begin
if vr<=((kre[2]+kre[3])/2) then mvr4:=0;
if (vr>((kre[2]+kre[3])/2)) and (vr<kre[3]) then mvr4:=(2*vr-kre[2]-kre[3])/(kre[3]-kre[2]);
if vr>=kre[3] then mvr4:=1;
if (vr<=((kre[1]+kre[2])/2)) or (vr>=((kre[3]+1)/2)) then mvr3:=0;
if (vr>((kre[1]+kre[2])/2)) and (vr<C1) then mvr3:=(2*vr-kre[1]-kre[2])/(kre[3]-kre[1]);
if (vr>=C1) and (vr<=C2) then mvr3:=min;
if (vr<((kre[3]+1)/2)) and (Vt[i]>C2) then mvr3:=1-((2*vr-kre[2]-kre[3])/(1-kre[2]));
if (vr<=(kre[1]/2)) or (vr>=((kre[2]+kre[3])/2)) then mvr2:=0;
if (vr>(kre[1]/2)) and (vr<((kre[1]+kre[2])/2)) then mvr2:=(2*vr-kre[1])/(kre[2]);
if (vr>=((kre[1]+kre[2])/2)) and (vr<=((kre[2]+kre[3])/2)) then mvr2:=1-((2*vr-kre[1]-kre[2])/(kre[3]-kre[1]));
if mvr4>mvr3 then re:=4;
if mvr2>mvr3 then re:=2;
end;
if TR[iv,k,ii]=4 then begin
if vr<=((kre[2]+kre[3])/2) then mvr4:=0;
if (vr>((kre[2]+kre[3])/2)) and (Vt[i]<C1) then mvr4:=(2*vr-kre[2]-kre[3])/(kre[3]-kre[2]);
if vr>=C1 then mvr4:=min;
if (vr<=((kre[1]+kre[2])/2)) or (vr>=((kre[3]+1)/2)) then mvr3:=0;
if (vr>((kre[1]+kre[2])/2)) and (vr<((kre[2]+kre[3])/2)) then mvr3:=(2*vr-kre[1]-kre[2])/(kre[3]-kre[1]);
if (vr<((kre[3]+1)/2)) and (vr>((kre[2]+kre[3])/2)) then mvr3:=1-((2*vr-kre[2]-kre[3])/(1-kre[2]));
if mvr3>mvr4 then re:=3;
end;
//---------------------
if re=1 then begin
Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-минимальный';
Edit4.Text:='минимальный';
end;
if re=2 then begin
Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-повышенный';
Edit4.Text:='повышенный';
end;
if re=3 then begin
Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-критический';
Edit4.Text:='критический';
end;
if re=4 then begin
Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-недопустимый';
Edit4.Text:='недопустимый';
end;
end;
Edit3.Text:=FloatToStrF(vr,ffFixed,9,2);
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm1.N3Click(Sender: TObject);
Var
Myfile : Textfile;
Date : String;
begin
If (saveDialog1.Execute) then begin
AssignFile(Myfile,Savedialog1.FileName);
Try Rewrite(myFile);
Except
Showmessage('Ошибка при чтении файла!'); Exit;
end;
Date:=IntToStr(SpinEdit1.Value);WriteLn(MyFile,Date);
Date:=Edit1.Text;WriteLn(MyFile,Date);
Date:=Edit2.Text;WriteLn(MyFile,Date);
For i:=0 to n-1 do begin
Date:=StringGrid1.Cells[i,1];
WriteLn(Myfile,Date);
end;
For i:=0 to n-1 do begin
Date:=StringGrid2.Cells[i,1];
WriteLn(Myfile,Date);
End;
For i:=0 to n-1 do begin
Date:=StringGrid3.Cells[i,1];
WriteLn(Myfile,Date);
End;
Date:=IntToStr(StringGrid4.ColCount);WriteLn(Myfile,Date);
For i:=0 to StringGrid4.ColCount-1 do begin
Date:=StringGrid4.Cells[i,1];
WriteLn(Myfile,Date);
End;
With Form2 do begin
Date:=IntToStr(SpinEdit1.Value);WriteLn(Myfile,Date);
Date:=Edit1.Text;WriteLn(Myfile,Date);
For i:=0 to nRt-1 do begin
Date:=StringGrid1.Cells[i,1];
WriteLn(Myfile,Date);
end;
For i:=0 to nRt-1 do begin
Date:=StringGrid2.Cells[i,1];
WriteLn(Myfile,Date);
end;
end;
Closefile(myFile);
end
else Begin Showmessage('Ошибка!'); Exit;end;
end;
procedure TForm1.N4Click(Sender: TObject);
Var
Myfile : Textfile;
Date : String;
begin
If (OpenDialog1.Execute) then begin
AssignFile(Myfile,Opendialog1.FileName);
Try Reset(myFile);
Except
Showmessage('Ошибка при чтении файла!'); Exit;
end;
ReadLn(MyFile,Date);SpinEdit1.Value:=StrToInt(Date);n:=StrToInt(Date);
ReadLn(MyFile,Date);Edit1.Text:=Date;
ReadLn(MyFile,Date);Edit2.Text:=Date;
For i:=0 to n-1 do begin
ReadLn(MyFile,Date);
StringGrid1.Cells[i,1]:=Date;
end;
For i:=0 to n-1 do begin
ReadLn(MyFile,Date);
StringGrid2.Cells[i,1]:=Date;
End;
For i:=0 to n-1 do begin
ReadLn(MyFile,Date);
StringGrid3.Cells[i,1]:=Date;
End;
ReadLn(MyFile,Date);StringGrid4.ColCount:=StrToInt(Date);
For i:=0 to StringGrid4.ColCount-1 do begin
ReadLn(MyFile,Date);
StringGrid4.Cells[i,1]:=Date;
End;
With Form2 do begin
ReadLn(MyFile,Date);SpinEdit1.Value:=StrToInt(Date);
nRt:=StrToInt(Date);StringGrid1.ColCount:=nRt;StringGrid2.ColCount:=nRt;
ReadLn(MyFile,Date);Edit1.Text:=Date;
For i:=0 to nRt-1 do begin
ReadLn(MyFile,Date);
StringGrid1.Cells[i,1]:=Date;
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25