Красноярск 2015

Министерство сельского хозяйства Российской Федерации

Департамент научно-технической политики и образования

Федеральное государственное бюджетное образовательное учреждение

Высшего образования

КРАСНОЯРСКИЙ ГОСУДАРСКВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ

Институт Экономики и финансов АПК

Кафедра «Бизнес информатики и

информационно-компьютерной

безопасности»

ОТЧЕТ

По дисциплине «Объектно-ориентированное программирование»

Лабораторная работа №2

Выполнила студентка 4 курса

Очной формы обучения

Института Эиф АПК

Группы 46 ________________________ (Ворончихина А.А.)

(подпись)

Представлена на проверку ________________________

(дата)

Проверена Титовская Т.С. ________________________

(подпись)

Красноярск 2015

Задание:Создать класс квадратная матрица, поля класса – размерность и элементы матрицы. Методы класса: проверка, является ли матрица матрица верхнетреугольной или нижнетреугольной, вывод матрицы. В классе предусмотреть методы перегрузки операций: сложение, вычитание, умножение матриц, умножение матрицы на число.

Код программы:

unit Unit1;

interface

uses

Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Edit1: TEdit;

Edit19: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Edit9: TEdit;

Edit10: TEdit;

Edit11: TEdit;

Edit12: TEdit;

Edit13: TEdit;

Edit14: TEdit;

Edit15: TEdit;

Edit16: TEdit;

Edit17: TEdit;

Edit18: TEdit;

Memo1: TMemo;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

type

TMatr=class

private

x:array[1..3,1..3] of real; y:array[1..3,1..3] of real; z:array[1..3,1..3] of real;

public

constructor create();

function MatrToStr(): String; function MatrToStr1(): String; function MatrToStr2(): String;

end;

operator +(const a,b:TMatr)r:TMatr;//сложение матриц

operator -(const a,b:TMatr)r:TMatr;//вычитание матриц



operator *(const a,b:TMatr)r:TMatr;//умножение матриц

operator *(const a:TMatr;b:real)r: TMatr; //умножение матрицы на число

var

Form1: TForm1;

m1:TMatr;

m2:TMatr;

m3:TMatr;

m4:TMatr;

m5:TMatr;

m6:TMatr;

implementation

constructor TMatr.Create();

begin

x[1,1]:=0; y[1,1]:=0; z[1,1]:=0;

x[1,2]:=0; y[1,2]:=0; z[1,2]:=0;

x[1,3]:=0; y[1,3]:=0; z[1,2]:=0;

x[2,1]:=0; y[2,1]:=0; z[2,1]:=0;

x[2,2]:=0; y[2,2]:=0; z[2,2]:=0;

x[2,3]:=0; y[2,3]:=0; z[2,3]:=0;

x[3,1]:=0; y[3,1]:=0; z[3,1]:=0;

x[3,2]:=0; y[3,2]:=0; z[3,2]:=0;

x[3,3]:=0; y[3,3]:=0; z[3,3]:=0;

inherited Create;

end;

operator +(const a, b: TMatr)r: TMatr; //сложение матриц

var i, j: integer;

begin

r:=TMatr.Create();

for i:=1 to 3 do

for j:=1 to 3 do

r.z[i,j]:=a.x[i,j]+b.y[i,j];

end;

operator -(const a,b:TMatr)r:TMatr; //вычитание матриц

var i, j: integer;

begin

r:=TMatr.Create();

for i:=1 to 3 do

for j:=1 to 3 do

r.z[i,j]:=a.x[i,j]-b.y[i,j];

end;

operator *(const a, b: TMatr)r: TMatr; //умножение матриц

var i, j: integer;

begin

r:=TMatr.Create();

for i:=1 to 3 do

for j:=1 to 3 do

r.z[i,j]:=a.x[i,j]*b.y[i,j];

end;

operator *(const a: TMatr;b:real)r: TMatr; //умножение матрицы на число

var i, j: integer;

begin

r:=TMatr.Create();

for i:=1 to 3 do

for j:=1 to 3 do

r.z[i,j]:=a.x[i,j]*b;

end;

function TMatr.MatrToStr(): String;

var s:string;

i, j :integer;

begin

s:='';

for i:=1 to 3 do

begin

for j:=1 to 3 do

s:=s+FloatTostr(x[i,j])+' ';

s:=s+#13#10;

end;

MatrToStr:=s;

end;

function TMatr.MatrToStr1(): String;

var s:string;

i, j :integer;

begin

s:='';

for i:=1 to 3 do

begin

for j:=1 to 3 do

s:=s+FloatTostr(y[i,j])+' ';

s:=s+#13#10;

end;

MatrToStr1:=s;

end;

function TMatr.MatrToStr2(): String;

var s:string;

i, j :integer;

begin

s:='';

for i:=1 to 3 do

begin

for j:=1 to 3 do

s:=s+FloatTostr(z[i,j])+' ';

s:=s+#13#10;

end;

MatrToStr2:=s;

End;

procedure TForm1.Button1Click(Sender: TObject);



var str:string; s:string;

begin

str:=m1.MatrToStr();

Memo1.Lines.Add(str);

str:=m2.MatrToStr1();

Memo1.Lines.Add(str);

end;

procedure TForm1.Button2Click(Sender: TObject);

var str:string; i, j :integer; a,b:Tmatr;

begin

m3.create();

m3:=m1+m2;

str:=m3.MatrToStr2();

Memo1.Lines.Add(str);

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

m1:=TMatr.Create();

m2:=TMatr.Create();

m1.x[1,1]:=StrToFloat(Edit1.Text); m2.y[1,1]:=StrToFloat(Edit10.Text);

m1.x[1,2]:=StrToFloat(Edit2.text); m2.y[1,2]:=StrToFloat(Edit11.text);

m1.x[1,3]:=StrToFloat(Edit3.text); m2.y[1,3]:=StrToFloat(Edit12.text);

m1.x[2,1]:=StrToFloat(Edit4.text); m2.y[2,1]:=StrToFloat(Edit13.text);

m1.x[2,2]:=StrToFloat(Edit5.text); m2.y[2,2]:=StrToFloat(Edit14.text);

m1.x[2,3]:=StrToFloat(Edit6.text); m2.y[2,3]:=StrToFloat(Edit15.text);

m1.x[3,1]:=StrToFloat(Edit7.text); m2.y[3,1]:=StrToFloat(Edit16.text);

m1.x[3,2]:=StrToFloat(Edit8.text); m2.y[3,2]:=StrToFloat(Edit17.text);

m1.x[3,3]:=StrToFloat(Edit9.text); m2.y[3,3]:=StrToFloat(Edit18.text);

end;

procedure TForm1.Button4Click(Sender: TObject);

var str:string;

begin

m4.create();

m4:=m1-m2;

str:=m4.MatrToStr2();

Memo1.Lines.Add(str);

end;

procedure TForm1.Button5Click(Sender: TObject);

var str:string;

begin

m5.create();

m5:=m1*m2;

str:=m5.MatrToStr2();

Memo1.Lines.Add(str);

end;

procedure TForm1.Button6Click(Sender: TObject);

var str:string;b:real;

begin

b:=Strtofloat(Edit19.text);

m6.create();

m6:=m1*b;

str:=m6.MatrToStr2();

Memo1.Lines.Add(str);

end;

procedure TForm1.Button7Click(Sender: TObject);

var n1,v1, n2, v2:boolean;

i,j,k:integer;

begin

n1:=false; v1:=false;

n2:=false; v2:=false;

for i:=1 to 3 do

for j:=1 to 3 do

begin

if (j

if (j>i) and (m1.x[i,j]=0) then v1:=true;

if (j

if (j>i) and (m2.y[i,j]=0) then v2:=true;

end;

if (n1=true) then showmessage('1-ая верхнетреугольная');

if (v1=true) then showmessage('1-ая нижнетреугольная');

if (n2=true) then showmessage('2-ая верхнетреугольная');

if (v2=true) then showmessage('2-ая нижнетреугольная');

if (v1=false) and (n1=false) then showmessage('1 - никакая');

if (v2=false) and (n2=false) then showmessage('2 - никакая');

end;

initialization

end.

Printscreen.

Результат:


5828058438670215.html
5828077243453258.html
    PR.RU™