Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
smpr_lr1.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
117.91 Кб
Скачать

Міністерство освіти і науки України

Національний університет водного господарства та природокористування

Навчально-науковий інститут автоматики, кібернетики та обчислювальної техніки

Кафедра прикладної математики

Звіт

із дисципліни

«Системи та методи прийняття рішень»

з лабораторної роботи №1

Виконав:

студент IV курсу

групи ПМ-42

Зіміч А.П.

Перевірила:

ст. викл. Федорчук Н. А.

Рівне – 2014

Тема: Бінарні відношення. Операції над бінарними відношеннями

Мета роботи: вивчення поняття бінарного відношення та операцій над бінарними відношеннями.

Завдання

Згідно індивідуального варіанту для заданих бінарних відношень та виконати наступні операції: перетин, об’єднання, знаходження різниці, симетричної різниці, доповнення, оберненого відношення, двоїстого відношення, композиції, звуження, включення та рівності.

7) .

Дана програма реалізована в середовищі програмування Borland Delphi 7.0:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls, Math, ExtCtrls;

type

TForm1 = class(TForm)

strngrd1: TStringGrid;

strngrd2: TStringGrid;

strngrd_per: TStringGrid;

btn1: TButton;

strngrd_dop: TStringGrid;

strngrd_ris: TStringGrid;

strngrd_sym: TStringGrid;

strngrd_dopr2: TStringGrid;

strngrd_obr1: TStringGrid;

strngrd_obr2: TStringGrid;

strngrd_dvr1: TStringGrid;

strngrd_dvr2: TStringGrid;

strngrd_comp: TStringGrid;

Img_per: TImage;

Img_ob: TImage;

Img_ris: TImage;

Img_sym: TImage;

Img_obr1: TImage;

Img_dvr1: TImage;

Img_comp: TImage;

Img_dopr2: TImage;

Img_obr2: TImage;

Img_dvr2: TImage;

Img_r1: TImage;

Img_r2: TImage;

lbl11: TLabel;

lbl12: TLabel;

lbl13: TLabel;

lbl3: TLabel;

lbl4: TLabel;

lbl5: TLabel;

lbl6: TLabel;

Img_dopr1: TImage;

strngrd_dopr1: TStringGrid;

lbl14: TLabel;

lbl15: TLabel;

lbl16: TLabel;

lbl17: TLabel;

lbl7: TLabel;

lbl8: TLabel;

lbl9: TLabel;

lbl1: TLabel;

lbl10: TLabel;

procedure btn1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormCanResize(Sender: TObject; var NewWidth,

NewHeight: Integer; var Resize: Boolean);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

R1,R2,RES:array[1..5,1..5] of string;

i,j,k,q:Integer;

values1, values2:TextFile;

k_mas:array[1..5] of string;

max:string;

p1x,p1y,p2x,p2y:integer;

implementation

{$R *.dfm}

procedure DrawArrowHead(Canvas: TCanvas; X,Y: Integer; Angle,LW: Extended);

var

A1,A2: Extended;

Arrow: array[0..3] of TPoint;

OldWidth: Integer;

const

Beta=0.180;

LineLen=5.74;

CentLen=3;

begin

Angle:=Pi+Angle;

Arrow[0]:=Point(X,Y);

A1:=Angle-Beta;

A2:=Angle+Beta;

Arrow[1]:=Point(X+Round(LineLen*LW*Cos(A1)),Y-Round(LineLen*LW*Sin(A1)));

Arrow[2]:=Point(X+Round(CentLen*LW*Cos(Angle)),Y-Round(CentLen*LW*Sin(Angle)));

Arrow[3]:=Point(X+Round(LineLen*LW*Cos(A2)),Y-Round(LineLen*LW*Sin(A2)));

OldWidth:=Canvas.Pen.Width;

Canvas.Pen.Width:=1;

Canvas.Polygon(Arrow);

Canvas.Pen.Width:=OldWidth

end;

procedure DrawArrow(Canvas: TCanvas; X1,Y1,X2,Y2: Integer; LW: Extended);

var

Angle: Extended;

begin

Angle:=ArcTan2(Y1-Y2,X2-X1);

Canvas.MoveTo(X1,Y1);

Canvas.LineTo(X2-Round(2*LW*Cos(Angle)),Y2+Round(2*LW*Sin(Angle)));

DrawArrowHead(Canvas,X2,Y2,Angle,LW);

end;

procedure calculate;

begin,

// Запис дананих в файл(val1;val2)

AssignFile(values1,'val1.dat');

Rewrite(values1);

for i:=1 to 5 do

for j:=1 to 5 do

Writeln(values1,form1.strngrd1.cells[i-1,j-1]);

CloseFile(values1);

AssignFile(values2,'val2.dat');

Rewrite(values2);

for i:=1 to 5 do

for j:=1 to 5 do

Writeln(values2,form1.strngrd2.cells[i-1,j-1]);

CloseFile(values2);

// Зчитання даних в масиви

for i:=1 to 5 do

for j:=1 to 5 do

R1[i,j]:=Form1.strngrd1.cells[i-1,j-1];

for i:=1 to 5 do

for j:=1 to 5 do

R2[i,j]:=Form1.strngrd2.cells[i-1,j-1];

// Перетин

for i:=1 to 5 do

for j:=1 to 5 do

if (R1[i,j]='1') and (R2[i,j]='1') then

begin

RES[i,j]:='1';

Form1.strngrd_per.Cells[i-1,j-1]:=res[i,j];

end

else

begin

RES[i,j]:='0';

Form1.strngrd_per.Cells[i-1,j-1]:=res[i,j];

end;

//Доповнення

for i:=1 to 5 do

for j:=1 to 5 do

if (R1[i,j]='0') and (R2[i,j]='0') then

begin

RES[i,j]:='0';

Form1.strngrd_dop.Cells[i-1,j-1]:=res[i,j];

end

else

begin

RES[i,j]:='1';

Form1.strngrd_dop.Cells[i-1,j-1]:=res[i,j];

end;

//Різниця

for i:=1 to 5 do

for j:=1 to 5 do

if (R1[i,j]='1') and (R2[i,j]='0') then

begin

RES[i,j]:='1';

Form1.strngrd_ris.Cells[i-1,j-1]:=res[i,j];

end

else

begin

RES[i,j]:='0';

Form1.strngrd_ris.Cells[i-1,j-1]:=res[i,j];

end;

//Симетрична різниця

for i:=1 to 5 do

for j:=1 to 5 do

if ((R1[i,j]='1') and (R2[i,j]='0')) or ((R1[i,j]='0') and (R2[i,j]='1')) then

begin

RES[i,j]:='1';

Form1.strngrd_sym.Cells[i-1,j-1]:=res[i,j];

end

else

begin

RES[i,j]:='0';

Form1.strngrd_sym.Cells[i-1,j-1]:=res[i,j];

end;

//Доповнення R1

for i:=1 to 5 do

for j:=1 to 5 do

if (R1[i,j]='1') then

begin

RES[i,j]:='0';

Form1.strngrd_dopr1.Cells[i-1,j-1]:=res[i,j];

end

else

begin

RES[i,j]:='1';

Form1.strngrd_dopr1.Cells[i-1,j-1]:=res[i,j];

end;

//Доповнення R2

for i:=1 to 5 do

for j:=1 to 5 do

if (R2[i,j]='1') then

begin

RES[i,j]:='0';

Form1.strngrd_dopr2.Cells[i-1,j-1]:=res[i,j];

end

else

begin

RES[i,j]:='1';

Form1.strngrd_dopr2.Cells[i-1,j-1]:=res[i,j];

end;

//Обернене до R1, R2

for i:=1 to 5 do

for j:=1 to 5 do

begin

form1.strngrd_obr1.Cells[i-1,j-1]:=R1[j,i];

form1.strngrd_obr2.Cells[i-1,j-1]:=R2[j,i];

end;

//Двоїсте до R1, R2

for i:=1 to 5 do

for j:=1 to 5 do

begin

form1.strngrd_dvr1.Cells[i-1,j-1]:=form1.strngrd_dopr1.cells[j-1,i-1];

form1.strngrd_dvr2.Cells[i-1,j-1]:=form1.strngrd_dopr2.cells[j-1,i-1];

end;

//Композиція

for i:=1 to 5 do

for j:=1 to 5 do

begin

for k:=1 to 5 do

begin

if ((R1[i,k]='1') and (R2[k,j]='1')) then k_mas[k]:='1'

else k_mas[k]:='0';

end;

max:='0';

for q:=1 to 5 do

if k_mas[q]<>max then max:='1';

form1.strngrd_comp.Cells[i-1,j-1]:=max;

for q:=1 to 5 do

k_mas[q]:='0';

end;

//Побудова графів

form1.Img_r1.Picture.LoadFromFile('1.bmp');

form1.Img_r2.Picture.LoadFromFile('1.bmp');

form1.Img_per.Picture.LoadFromFile('1.bmp');

form1.Img_ob.Picture.LoadFromFile('1.bmp');

form1.Img_ris.Picture.LoadFromFile('1.bmp');

form1.Img_sym.Picture.LoadFromFile('1.bmp');

form1.Img_dopr1.Picture.LoadFromFile('1.bmp');

form1.Img_dopr2.Picture.LoadFromFile('1.bmp');

form1.Img_obr1.Picture.LoadFromFile('1.bmp');

form1.Img_obr2.Picture.LoadFromFile('1.bmp');

form1.Img_dvr1.Picture.LoadFromFile('1.bmp');

form1.Img_dvr2.Picture.LoadFromFile('1.bmp');

form1.Img_comp.Picture.LoadFromFile('1.bmp');

form1.Img_per.Canvas.Brush.Color:=clblack;

form1.Img_ob.Canvas.Brush.Color:=clblack;

form1.Img_ris.Canvas.Brush.Color:=clblack;

form1.Img_sym.Canvas.Brush.Color:=clblack;

form1.Img_dopr1.Canvas.Brush.Color:=clblack;

form1.Img_dopr2.Canvas.Brush.Color:=clblack;

form1.Img_obr1.Canvas.Brush.Color:=clblack;

form1.Img_obr2.Canvas.Brush.Color:=clblack;

form1.Img_dvr1.Canvas.Brush.Color:=clblack;

form1.Img_dvr2.Canvas.Brush.Color:=clblack;

form1.Img_comp.Canvas.Brush.Color:=clblack;

form1.Img_r1.Canvas.Brush.Color:=clblack;

form1.Img_r2.Canvas.Brush.Color:=clblack;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]