if mVt[i-1,j]<mVt[i,j] then iv:=i;
end;
if k=1 then Form3.StringGrid2.Cells[1,j]:=FloatToStrF(mCt[k,j],ffFixed,9,2)+'-минимальный';
if k=2 then Form3.StringGrid2.Cells[1,j]:=FloatToStrF(mCt[k,j],ffFixed,9,2)+'-повышенный';
if k=3 then Form3.StringGrid2.Cells[1,j]:=FloatToStrF(mCt[k,j],ffFixed,9,2)+'-критический';
if k=4 then Form3.StringGrid2.Cells[1,j]:=FloatToStrF(mCt[k,j],ffFixed,9,2)+'-недопустимый';
if ii=1 then Form3.StringGrid2.Cells[2,j]:=FloatToStrF(mRt[ii,j],ffFixed,9,2)+'-минимальный';
if ii=2 then Form3.StringGrid2.Cells[2,j]:=FloatToStrF(mRt[ii,j],ffFixed,9,2)+'-повышенный';
if ii=3 then Form3.StringGrid2.Cells[2,j]:=FloatToStrF(mRt[ii,j],ffFixed,9,2)+'-критический';
if ii=4 then Form3.StringGrid2.Cells[2,j]:=FloatToStrF(mRt[ii,j],ffFixed,9,2)+'-недопустимый';
if iv=1 then Form3.StringGrid2.Cells[3,j]:=FloatToStrF(mVt[iv,j],ffFixed,9,2)+'-минимальный';
if iv=2 then Form3.StringGrid2.Cells[3,j]:=FloatToStrF(mVt[iv,j],ffFixed,9,2)+'-повышенный';
if iv=3 then Form3.StringGrid2.Cells[3,j]:=FloatToStrF(mVt[iv,j],ffFixed,9,2)+'-критический';
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]));
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]));
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]));
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;
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;
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)) 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)) 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;
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)) 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 mvr4>mvr3 then re:=4;
if mvr2>mvr3 then re:=2;
if TR[iv,k,ii]=4 then begin
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 mvr3>mvr4 then re:=3;
//---------------------
Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-минимальный';
Edit4.Text:='минимальный';
Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-повышенный';
Edit4.Text:='повышенный';
Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-критический';
Edit4.Text:='критический';
Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-недопустимый';
Edit4.Text:='недопустимый';
Edit3.Text:=FloatToStrF(vr,ffFixed,9,2);
procedure TForm1.N7Click(Sender: TObject);
begin
Form2.Show;
procedure TForm1.N3Click(Sender: TObject);
Var
Myfile : Textfile;
Date : String;
If (saveDialog1.Execute) then begin
AssignFile(Myfile,Savedialog1.FileName);
Try Rewrite(myFile);
Except
Showmessage('Ошибка при чтении файла!'); Exit;
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);
Date:=StringGrid2.Cells[i,1];
End;
Date:=StringGrid3.Cells[i,1];
Date:=IntToStr(StringGrid4.ColCount);WriteLn(Myfile,Date);
For i:=0 to StringGrid4.ColCount-1 do begin
Date:=StringGrid4.Cells[i,1];
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
Closefile(myFile);
end
else Begin Showmessage('Ошибка!'); Exit;end;
procedure TForm1.N4Click(Sender: TObject);
If (OpenDialog1.Execute) then begin
AssignFile(Myfile,Opendialog1.FileName);
Try Reset(myFile);
ReadLn(MyFile,Date);SpinEdit1.Value:=StrToInt(Date);n:=StrToInt(Date);
ReadLn(MyFile,Date);Edit1.Text:=Date;
ReadLn(MyFile,Date);Edit2.Text:=Date;
ReadLn(MyFile,Date);
StringGrid1.Cells[i,1]:=Date;
StringGrid2.Cells[i,1]:=Date;
StringGrid3.Cells[i,1]:=Date;
ReadLn(MyFile,Date);StringGrid4.ColCount:=StrToInt(Date);
StringGrid4.Cells[i,1]:=Date;
ReadLn(MyFile,Date);SpinEdit1.Value:=StrToInt(Date);
nRt:=StrToInt(Date);StringGrid1.ColCount:=nRt;StringGrid2.ColCount:=nRt;
if StringGrid4.ColCount=1 then CheckBox1.Checked:=true;
else Begin Showmessage('Файл не найден!'); Exit;end;
procedure TForm1.N6Click(Sender: TObject);
Form4.Show;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
Case key of
chr(45),chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(44),chr(8):;
else key:=chr(0); end;
procedure TForm1.N5Click(Sender: TObject);
Form5.show;
procedure TForm1.N9Click(Sender: TObject);
Form6.show;
procedure TForm1.Button1Click(Sender: TObject);
Form3.Show;
end.
unit Rtmodul;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Grids, Spin;
type
TForm2 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
SpinEdit1: TSpinEdit;
Label2: TLabel;
Edit1: TEdit;
GroupBox2: TGroupBox;
StringGrid1: TStringGrid;
GroupBox3: TGroupBox;
StringGrid2: TStringGrid;
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure SpinEdit1Change(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
var
Form2: TForm2;
Rtkey : boolean;
i,j,ii : integer;
NPVpmin,NPVpmax,NPVpav,smin,smax : real;{прогнозное значение NPV для интервала}
implementation
uses datamodul;
{$R *.dfm}
procedure TForm2.SpinEdit1Change(Sender: TObject);
nRt:=SpinEdit1.Value;
StringGrid1.ColCount:=nRt;
StringGrid2.ColCount:=nRt;
for i:=1 to nRt do begin
StringGrid1.Cells[i-1,0]:=IntToStr(i);
StringGrid2.Cells[i-1,0]:=IntToStr(i);
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
chr(45),chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54),
chr(55),chr(56),chr(57),chr(44),chr(8):;
else key:=chr(0);
procedure TForm2.FormCreate(Sender: TObject);
nRt:=n;
for j:=0 to nRt-1 do begin
StringGrid1.Cells[j,0]:=IntToStr(j+1);
StringGrid2.Cells[j,0]:=IntToStr(j+1);
For i:=1 to n do begin
RSvar[i]:=0;
Rdvar[i]:=0;
procedure TForm2.StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure TForm2.StringGrid2KeyPress(Sender: TObject; var Key: Char);
procedure TForm2.BitBtn1Click(Sender: TObject);
//----------------------------- Ввод значений в массив для рассчета коэф-та ликвидности Rt
try Ir:=StrToFloat(Edit1.Text); Except Ir:=0; Edit1.Text:=IntToStr(0); end;
try
RSvar[i]:=StrToFloat(StringGrid2.Cells[i-1,1]);
StringGrid2.Cells[i-1,1]:=IntToStr(0);
Rdvar[i]:=StrToFloat(StringGrid1.Cells[i-1,1]);
StringGrid1.Cells[i-1,1]:=IntToStr(0);
Rtkey:=true;
Form2.Hide;
Form1.Show;
procedure TForm2.BitBtn2Click(Sender: TObject);
Rtkey:=false;
Form2.Close;
unit Formirmodul;
Dialogs, Grids, StdCtrls, Menus;
TForm4 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N7Click(Sender: TObject);
Form4: TForm4;
i,j,t : integer;
PlusSi,MinusSi : array[1..3,1..20] of real;
procedure TForm4.FormCreate(Sender: TObject);
StringGrid1.ColCount:=n+1;
StringGrid2.ColCount:=n+1;
StringGrid1.Cells[0,1]:='Доходы от реализации продукции';
StringGrid1.Cells[0,2]:='Возмещение НДС по инвестиции';
StringGrid1.Cells[0,3]:='Амортизация';
StringGrid2.Cells[0,1]:='Инвестиции (включая НДС)';
StringGrid2.Cells[0,2]:='Прирост оборотных средств';
StringGrid2.Cells[0,3]:='Эксплутационные затраты';
StringGrid2.Cells[0,4]:='Налоги';
StringGrid1.Cells[i,0]:=IntToStr(i);
StringGrid2.Cells[i,0]:=IntToStr(i);
procedure TForm4.N5Click(Sender: TObject);
if StringGrid1.Focused then StringGrid1.RowCount:=StringGrid1.RowCount+1;
if StringGrid2.Focused then StringGrid2.RowCount:=StringGrid2.RowCount+1;
procedure TForm4.N6Click(Sender: TObject);
if StringGrid1.Focused then StringGrid1.RowCount:=StringGrid1.RowCount-1;
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13