Скачиваний:
4
Добавлен:
01.05.2014
Размер:
5 Кб
Скачать
unit UMain_F;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, UMatr, Gauges, Menus;

type
  TMain_F = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Razm_M: TBitBtn;
    GroupBox1: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    BitBtn1: TBitBtn;
    GroupBox2: TGroupBox;
    Label6: TLabel;
    Edit5: TEdit;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Gauge1: TGauge;
    MainMenu1: TMainMenu;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    //N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Razm_MClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    
  private
    { Private declarations }
    n:Longint;
    A,B,C: matr;
   public
    { Public declarations }
  end;

var
  Main_F: TMain_F;

implementation

uses UShow, Uprog, UHelp;
                
{$R *.dfm}

procedure TMain_F.FormCreate(Sender: TObject);
begin
  Edit2.Text:='';
  Edit3.Text:='';
  Edit4.Text:='';
  Edit5.Text:='';
  Caption:='Разреженные матрицы';
  N:=0;
end;

procedure TMain_F.Razm_MClick(Sender: TObject);
begin
 try
  n:=StrToInt(Edit1.Text);
  if (n<1) Or (n>Max) then
  begin
   MessageDlg('Вы ввели некорректную размерность!',mtError,[mbOK],0);
   exit;
  end;
  UMatr.Null(A,n);
  Edit1.Enabled:=False;
  //Razm_M.Enabled:=false;
  BitBtn1.Enabled:=true;
  BitBtn2.Enabled:=true;
 except
   MessageDlg('Вы ввели некорректную размерность!',mtError,[mbOK],0);
 End;
end;

procedure TMain_F.BitBtn1Click(Sender: TObject);

var i,j: ind_M;
    el: type_el;
 begin
  try
  i:=StrToInt(Edit2.Text);
  j:=StrToInt(Edit3.Text);
  el:=StrToInt(Edit4.Text);
  if ((i<1) or (i>n)) or
     ((j<1) or (j>n))
      or (el=0)  then
    begin
    MessageDlg('Некорректный ввод данных!',mtError,[mbOK],0);
    exit;
    end;
  Input(n,i,j,el,A);
  except
  MessageDlg('Некорректный ввод данных!',mtError,[mbOK],0);
  end;
end;

procedure TMain_F.BitBtn3Click(Sender: TObject);
begin
  if n=0 then
  begin
  MessageDlg('Матрица не создана!',mtError,[mbOK],0);
  exit;
  end;
  Show_F.Load(A, N);
  Show_F.ShowModal;

end;

procedure TMain_F.BitBtn2Click(Sender: TObject);
var deg, k, i, j:longint;
    Rez : type_el;
begin
   Try
     deg:=StrToInt(edit5.Text);
   Except
     MessageDlg('Некорректный ввод степени!',mtError,[mbOK],0);
     Exit;
   End;
   if deg<1 then
 begin
 MessageDlg('Некорректный ввод степени!',mtError,[mbOK],0);
 Exit;
 End;

 Gauge1.Progress := 0;

if deg=1 then
begin
  Gauge1.Progress := 100;
  C := A;
end
 else
   begin
    j:=0;
    Gauge1.Progress := Trunc((1 / Deg) * 100);
    CopyMatr(A,B,n);
    Null(C,n);
      For k:=2 to deg do
 	begin
          Gauge1.Progress := Trunc((K / Deg) * 100);
	  DelMatr(C,n);
	   For i:=0 to n-1 do
                      begin
		         For j:=0 to n-1 do
                                begin
			           Proizv (B,A,i,j,rez);
                                       if rez<>0 then
			                  Input(n,i+1,j+1,rez,C);
                                end;{for}
		          j:=0;
                       end; {for}
            DelMatr(B,n);
            CopyMatr(C,B,n);
        end; {for}

End;
  Show_F.Load(C,N);
  Show_F.ShowModal;
end;

procedure TMain_F.N2Click(Sender: TObject);
begin
  Form1.ShowModal;
end;

procedure TMain_F.N3Click(Sender: TObject);
begin
Help_F.ShowModal;
end;  

procedure TMain_F.N4Click(Sender: TObject);
begin
BitBtn4Click(Self);
end;

procedure TMain_F.BitBtn4Click(Sender: TObject);
begin
If MessageDlg('Вы уверены, что хотите завершить работу программы?', mtConfirmation,[mbYes ,mbNo],0)= mrYes then
begin
UMatr.DelMatr(A,n);
Umatr.DelMatr(B,n);
UMatr.DelMatr(C,n);  
Main_F.Close;
end;
end;

procedure TMain_F.BitBtn5Click(Sender: TObject);
var f_in:textfile;
    i,j:Ind_M;
    el:type_el;
begin
Razm_M.Enabled:=false;
Edit1.Enabled:=false;
BitBtn1.Enabled:=true;
assignfile (f_in,'a:\f.txt');
reset (f_in);
read(f_in,n);
Null(A,n);
while not eof(f_in)do
begin
read(f_in,i,j,el);
readln(f_in);
Input(n,i,j,el,A);
end;
end;


end.
Соседние файлы в папке Возведение матрицы в степень
  • #
    01.05.20143 Кб4UHelp.dfm
  • #
    01.05.2014342 б5UHelp.pas
  • #
    01.05.20149 Кб5UMain_F.dcu
  • #
    01.05.201451 б4UMain_F.ddp
  • #
    01.05.201412 Кб4UMain_F.dfm
  • #
    01.05.20145 Кб4UMain_F.pas
  • #
    01.05.20142 Кб5UMatr.dcu
  • #
    01.05.20144 Кб4UMatr.pas
  • #
    01.05.20143 Кб4Uprog.dcu
  • #
    01.05.201451 б4Uprog.ddp
  • #
    01.05.20141 Кб4Uprog.dfm