Отчеты по лабораторным работам
1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 (0 Голоса)

Лабораторная №2 По дисциплине ОАПС

 

Цель работы: Разработать программу, реализующую нахождение минимального списка интервала, для заданной таблицы покрытий.

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

Описание программы:

На главной форме программы имеется поля ввода, предназначенное для изменения размера таблицы покрытий. Для представления таблицы покрытий используется компонент TStringGrid.

Тестовый пример:

Таблица покрытий

x1 x2 x3 x4

Результат работы программы:

k1,k2,k4

Вывод: в ходе лабораторной работы была разработана программа реализующая нахождение минимального списка интервалов.

Текст программы:

unit Unit2;

interface

uses

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

StdCtrls, Grids, ComCtrls, Mask, Buttons;

type

bitOperator = class

procedure getFormData();

procedure setFormData();

procedure maxRankSerach();

procedure buildSuperfluityTable;

procedure combination;

private

{ Private declarations }

public

{ Public declarations }

end;

implementation

uses unit1;

var

arcNum:integer;

temp, final:byte;

firstIncludedPosition:integer;

procedure bitOperator. getFormData();

var

i, j,b, rc, cc, rank:integer;

begin

for i:=0 to (Form1.stringgrid1.RowCount) do

begin

rank:=0;

for j:=0 to Form1.stringgrid1.ColCount do

begin

if(Form1.stringGrid1.Cells[j, i] = '1') then

begin

b:=1;

b:=b shl j;

mainStructure[i+1][1]:=mainStructure[i+1][1] or b;

inc(rank);

final:=final or mainStructure[i+1][1];

end;

end;

mainStructure[i+1][2]:=rank;

end;

end;

procedure bitOperator. maxRankSerach;

var

i, max, maxCnt:integer;

begin

maxCnt:=1;

max:=mainStructure[maxCnt][2];

for i:=1 to 8 do

begin

if (max<mainStructure[i][2]) then

begin

max:=mainStructure[i][2];

maxCnt:=i;

end;

end;

temp:=mainStructure[maxCnt][1];

firstIncludedPosition:=maxCnt;

mainStructure[maxCnt][5]:=1;

end;

procedure bitOperator. buildSuperfluityTable;

var

i, j,k:integer;

a, b,superfluity:byte;

begin

superfluity:=0;

i:=1;

while(i <= 8) do

begin

if(mainStructure[i][5]<>1)then

begin

for j:=0 to 7 do

begin

//×òåíèå áèòà

b:=1;

b:=b shl j;

b:=temp and b;

a:=1;

a:=a shl j;

a:=mainStructure[i][1] and a;

if((b>0) and (a>0))then

begin

inc(superfluity);

end;

end;

mainStructure[i][4]:=superfluity;

mainStructure[i][3]:=mainStructure[i][2]-superfluity;

superfluity:=0;

end;

inc(i);

end;

end;

procedure bitOperator. combination;

var

i, j:integer;

minSfty, minCnt, k:byte;

begin

if(temp<>final)then

begin

for k:=8 downto 1 do

begin

if(mainStructure[k][5]<>1)then

minCnt:=k;

end;

minSfty:=mainStructure[minCnt][4];

for i:=1 to 8 do

begin

if((mainStructure[i][5]<>1) and (minSfty>=mainStructure[i][4]) and (mainStructure[i][2]<>0)) then

begin

if(minSfty=mainStructure[i][4])then

if(mainStructure[minCnt][3] <= mainStructure[i][3])then

begin

minSfty:=mainStructure[i][4];

minCnt:=i;

end

else

begin

end

else

begin

minCnt:=i;

minSfty:=mainStructure[i][4];

end;

end;

end;

if(mainStructure[minCnt][3]>0)then

begin

mainStructure[minCnt][5]:=1;

temp := mainStructure[minCnt][1] or temp;

end;

end;

end;

procedure bitOperator. setFormData();

var

i, j,cnt, rc, cc:integer;

wReg1,wReg2,wReg3:word;

begin

cnt:=0;

//Form1.stringgrid2.ColCount:=arcNum;

//rc:=Form1.stringgrid2.RowCount;

Form1.Label4.Caption:='';

cc:=Form1.stringgrid2.ColCount;

j:=0;

for i:=0 to cc do

begin

if(mainStructure[i+1][5]=1) then

begin

Form1.StringGrid2.Cells[0,i]:='1';

Form1.Label4.Caption:=concat(Form1.Label4.Caption, inttostr(i+1),', ');

end;

end;

end;

end.

Добавить комментарий


Защитный код
Обновить

По темам:

История Украины

Культурология

Высшая математика

Информатика

Охотоведение

Статистика

География

Военная наука

Английский язык

Генетика

Разное

Технологиеские темы

Украинский язык

Филология

Философия

Химия

Экология

Социология

Физическое воспитание

Растениевосдство

Педагогика

История

Психология

Религиоведение

Плодоводство

Экономические темы

Бухгалтерские темы

Маркетинг

Иностранные языки

Ветеринарная медицина

Технические темы

Землеустройство

Медицинские темы

Творчество

Лесное и парковое хозяйство