на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Практичні аспекти створення програмного забезпечення
p align="left">{знайти найширший пункт}

Function TMenu.getMaximalWidth: Integer;

var max: integer;

i: integer;

begin

if ItemsCount > 0 then

begin

max := Length(Items[1].Caption);

For I:=1 to ItemsCount do

begin

If Length(Items[i].Caption) > max then

Max := Length(Items[i].Caption);

end;

end;

getMaximalWidth := max;

end;

{виконати дiю}

Procedure TMenu.ExecuteAction;

Var N: Integer;

Begin

if ItemsCount > 0 then

begin

For N:=1 to ItemsCount do

begin

If Items[N].Selected Then ProcedureType(Items[N].Action);

end;

end;

End;

{додати пункт до меню}

Procedure TMenu.AddItem(Caption: String; Action: ProcedurePointer);

begin

If ItemsCount < MaxMenuItems then

begin

ItemsCount := ItemsCount + 1;

Items[ItemsCount].Caption := Caption;

If ItemsCount = 1 Then

Items[ItemsCount].Selected := True

Else Items[ItemsCount].Selected := False;

Items[ItemsCount].Action := Action;

end;

end;

{встановити потрiбний текстовий режим та знайти ширину i висоту екрану}

Procedure ScreenInitialization;

Begin

CheckBreak := False;

OriginalMode := LastMode;

TextMode( Lo(LastMode) + Font8x8);

ScreenWidth := Lo(WindMax) + 1;

ScreenHeight := Hi(WindMax) + 1;

TextBackground(Black);

TextColor(White);

End;

{процедура виходу}

Procedure ExitProc;

begin

Halt;

end;

{вивiд допомоги}

Procedure PrintHelp;

var s: file of char;

buffer:char;

begin

CreateTextWindow(1, 7, ScreenWidth, ScreenHeight, Black, White);

assign(s, 'help.txt');

reset(s);

while not eof(s) do

begin

read(s, buffer);

write(buffer);

end;

end;

{запит з клавiатури значення (1)}

Function InputValue(Comment: String): Integer;

Var Temp: Integer;

Len: Integer;

I, J: Integer;

begin

Len:= Length(comment);

J := 1;

While J <> 0 do

begin

CreateTextWindow( ScreenWidth div 2 - Len div 2 - 2,

ScreenHeight div 2 - 6 div 2,

ScreenWidth div 2 + Len div 2+ 2,

ScreenHeight div 2 + 6 div 2,

Blue, White);

TextColor(Yellow);

GotoXY( 3, 3); Write(Comment);

TextColor(White);

Window( ScreenWidth div 2 - Len div 2,

ScreenHeight div 2 + 2 div 2,

ScreenWidth div 2 + Len div 2,

ScreenHeight div 2 + 4 div 2);

TextColor(White);

{$I-}

Readln(Temp);

{$I+}

If IOResult <> 0 then J:=1 Else J:=0;

end;

CreateTextWindow(1, 7, ScreenWidth, ScreenHeight, Black, White);

InputValue := Temp;

end;

Procedure ASSIGMENTPROBLEM(N: Integer; C: MyArray);

var I, J0,m,m0,h2, I0,j1,last,up,low, J, k, cnt, s, ss: Integer;

V, u, d: MySimpleArray;

VJ, v0,h, dj, min,z : Real;

x,y, Col, free, lab: array[1..MaxN] of Integer;

label 41, 50, 43, 60, 55, 70, 80, 999;

begin

For I:=1 to N do

X[i] := 0;

For J0:=1 to N do

begin

J:=N - J0 + 1;

VJ := C[j,1];

I0 := 1;

For I:= 2 To N do

If C[i,j] < vj Then begin vj := C[i,j]; I0 := i; end;

V[j] := vj;

Col[j] := j;

If X[i0] = 0 then begin x[i0]:=j; y[j]:=i0; end

else begin x[i0] := -1 * ABS( X[i0] ); y[j]:=0; end;

end;

m:=0;

For I:=1 to N do

begin

If x[i] = 0 then

begin

m:=m+1;

free[m]:=i;

break;

end; {if}

If x[i] < 0 then

x[i]:=-1*x[i]

else

begin

j1:=x[i]; min:=Huge;

For J:=1 to N do

begin

If j = j1 then break;

If c[j,i] - v[j] < min then Min := c[j,i] - v[j];

end; {for}

v[j1] := v[j1] - min;

end;{else}

end;

Cnt:=0;

If m = 0 then goto 999;

41:

m0:=m; k:=1; m:=0;

50:

i:=free[k]; k:=k+1;

v0 := c[1, i] - v[1];

j0:=1; vj:=Huge;

For j:=2 to N do

begin

h:=c[j,i] - v[j];

If H < vj then

begin

if H >= v0 then

begin vj := h; j1 := j; end

else begin vj:=v0; v0 := h; j1:=j0; j0:=j; end;

end;

end;

i0:=y[j0];

if v0 < vj then

v[j0] := v[j0] - vj + v0

else

begin

if i0 = 0 then goto 43;

j0:=j1; i0 := y[j1];

end;

if i0 = 0 then goto 43;

if v0 < vj then

begin

k := k - 1;

free[k]:=i0;

end else

begin

m:=m+1;

free[m]:=i0;

end;

43:

x[i] := j0;

y[j0] := i;

if k <= m0 then goto 50;

cnt := cnt + 1;

if (m > 0) AND (cnt < 2) then Goto 41;

m0 := m;

For M:=1 to M0 do

begin

i0:=free[m];

For J:=1 to N do

begin

d[j]:=c[j,i0] - v[j];

lab[j]:=i0;

end;

up:=1;

low := 1;

60:

last:=low - 1;

min := d[col[up]];

up := up+1;

for k:=up to n do

begin

j := col[k];

dj := d[j];

if dj <=min then

begin

if dj < min then begin min:=dj; up:=low; end;

col[k]:=col[k];

col[up] := j;

up := up+1;

end;

end;

for h2:=low to up - 1 do

begin

j:=col[h2];

if y[j] = 0 then Goto 70;

end;

55:

j0:=col[low];

low:=low+1;

i:=y[j0];

h:=c[j0, i] - v[j0] - min;

for k:=up to n do

begin

j:=col[k];

vj:=c[j,i] - v[j] - h;

if vj < d[j] then

begin

d[j] := vj;

lab[j]:=i;

if vj = min then

begin

if y[j] = 0 then Goto 70;

col[k]:=col[up];

col[up]:=j;

up:=up+1;

end;

end;

end;

if low = up then goto 60;

goto 55;

70:

for k:=1 to last do

begin

j0 := col[k];

v[j0] := v[j0] + d[j0] - min;

end;

80:

i:=lab[j];

y[j]:=i;

k:=j;

j:=x[i];

x[i]:=k;

if i0 <> i then Goto 80;

end;

999:

z := 0;

For I:=1 to N do

begin

u[i]:=c[x[i],i] - v[x[i]];

z:=z+c[x[i],i];

end;

Writeln;

TextColor(LightBlue);

For I:=1 to N do begin

Writeln(' ДЛя комп"ютера ', I, ' задача ', y[i], ' найкраще пiдiйде.');

end;

end;

procedure PROG;

var i, j: integer;

si, sj: string;

begin

Num:=InputValue('Введiть кiлькiсть комп"ютерiв:');

For I:=1 to Num do

For J:=1 to Num do

begin

str(i, si);

str(j, sj);

Input[I,J]:=InputValue('Коефiцiєнт ' + si + '-ї задачi на комп"ютерi ' + sj);

end;

ASSIGMENTPROBLEM(num, input);

end;

procedure priklad;

var

FC: File of Char;

I, J: Integer;

BUFFER: Char;

begin

CreateTextWindow(1, 7, ScreenWidth, ScreenHeight, Black, White);

Assign(FC, 'EXAMPLET.TXT');

Reset(FC);

While not EOF(FC) do

begin

Read(FC, BUFFER);

Write(Buffer);

end;

close(FC);

Num:=5;

Input[1,1]:=9; Input[2,1]:=20; Input[3,1]:=60; Input[4,1]:=15; Input[5,1]:=21;

Input[1,2]:=38; Input[2,2]:=71; Input[3,2]:=69; Input[4,2]:=49; Input[5,2]:=60;

Input[1,3]:=28; Input[2,3]:=13; Input[3,3]:=80; Input[4,3]:=28; Input[5,3]:=34;

Input[1,4]:=58; Input[2,4]:=34; Input[3,4]:=13; Input[4,4]:=37; Input[5,4]:=25;

Input[1,5]:=30; Input[5,5]:=3; Input[2,5]:=53; Input[3,5]:=20; Input[4,5]:=21;

ASSIGMENTPROBLEM(num, input);

end;

begin

{встановлюємо екран}

ScreenInitialization;

{додаємо до меню пунктики}

With Menu do

begin

AddItem('Prog', @PROG);

AddItem('Справка', @printHelp);

AddItem('Пример', @priklad);

AddItem('Выход', @exitProc);

Activate;

end;

end.

Керівництво користувача

Дана програма призначена для використання в операційній системі MS DOS.

Для запуску програми потрібно запустити файл Lena.exe. Після запуску програми на екрані з'являється меню, яке містить три пункти - “Данные”, “Результат” та “?”. Пункт меню “Данные” складається з підпунктів “Из файла”, “Вручную”, “Выход”. Вибравши “Из файла”, ви вводите матрицю вагів, збережену в якомусь файлі. Вибравши “Выход”, програма закривається. “Результат” має підпункти “На экран” і “В файл”. Вибравши один з цих підпунктів, ви або виводите результат на екран, або відповідно зберігаєте його у файл. Пункт меню “?” має підпункт “Справка”.

Технічні вимоги до використання

Для запуску даної програми необхідна наявність персонального комп'ютера IBM PC.

Мінімальні вимоги до ПК:

Intel Pentium 100 мГц;

операційна система MS DOS;

пам'ять 288 байт;

дисковод або CD ROM;

клавіатура.

Висновок

У цій курсовій роботі вирішена задача про призначення.

Розроблено алгоритм рішення поставленої задачі.

Програма складена і налагоджена у середовищі програмування Турбо Паскаль.

У процесі налагодження була отримана цілком працездатна програма.

Проведено тестування програми. Аналіз результатів показав, що задача успішно виконана.

Довідкова література

1. Б.Іванов “Дискретная математика. Алгоритмы и программы”.

2. Н.Вірт “Алгоритми + Структури даних = Програма”.

3. Т.Рюттен, Г.Франкен “Турбо Паскаль 6.0”.

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.