
Міністерство освіти і науки України
Національний університет водного господарства та природокористування
Навчально-науковий інститут автоматики, кібернетики та обчислювальної техніки
Кафедра прикладної математики
Звіт
із дисципліни
«Системи та методи прийняття рішень»
з лабораторної роботи №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;