Линейное программирование_ Решение задач грфическим способом

Страница: 7/10

MoveTo(100, 100); LineTo(200, 200);

является эквивалентной

Line(100, 100, 200, 200); MoveTo(200, 200);

Procedure OutTextXY(X, Y : Integer; TextString : String);

Посылает строку на устройство вывода. Отображает TextString в позиции (X, Y). Строка TextString усекается на границе области просмотра, если она слишком длинная. Если один из штриховых шрифтов активен, то строка TextString усекается на границе экрана, если она слишком длинная. Если заданный по умолчанию (растровый шрифт активен, и строка слишком длинная, чтобы поместиться на экране, то текст не отображается вообще.

Процедура OutTextXY использует набор шрифтов SetTextStyle. Чтобы поддерживать совместимость кода при использовании нескольких шрифтов, используйте TextWidth и TextHeight для определения размера строки.

Procedure SetFillStyle(Pattern : Word; Color : Word);

Устанавливает цвет и стиль закраски. Устанавливает шаблон и цвет для всех операций закраски, производимых FillPoly, Bar, Bar3D и PieSlice. Доступно несколько предопределенных шаблонов закраски. Заданный по умолчанию шаблон = Solid и заданный по умолчанию цвет - цвет с максимальным номером в палитре. Если в SetFillStyle переданы недопустимые параметры, то в переменной GraphResult возвращается значение grError, и текущие установки закраски не будут изменены.

Если Pattern равняется UserFill, то активным шаблоном закраски станет шаблон, определяемый пользователем (устанавливаемый с помощью процедуры SetFillPattern).

Procedure FloodFill(X, Y : Integer; Border : Word);

Закрашивает замкнутую область, используя текущие стиль и цвет закраски. Закрашивает замкнутую область на растровых устройствах. Точка с координатами (X, Y) - начальная точка внутри замкнутой области, с которой начнется закраска. Текущий шаблон закраски устанавливается процедурами SetFillStyle и SetFillPattern. Закрашивается область, ограниченная цветом с номером Border. Если точка (X, Y) находится внутри замкнутой области, то закраска будет происходить внутри области. Если же эта точка находится снаружи замкнутой области, то будет закрашено все пространство вне области.

Более подробное описание программы содержится в комментариях к исходному тексту.

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

{$A+,B-,D+,E+,F-,G-,I+,L+,N+,O+,P-,Q-,R-,S+,T-,V+,X+}

{$M 16384,0,655360}

program Kurs1;{Геометрическая интерпретация решения задач}

uses

CRT, Graph;{используемы модули}

{Типы}

type

TNerav = record{коэффициенты неравенств а1х+а2y<=b}

x: Real;{a1}

y: Real;{a2}

b: Real; {b}

end;

TMatrix = array[1 100] of TNerav;{Количество неравенств}

{Константы}

const

MaxX: Integer = 640-30; {максимальное значение X на экране}

MaxY = 20; {максимальное значение Y на экране}

MinX = 40; {x=0 минимальное значение X на экране}

MinY: Integer = 480-40;{y=0 минимальное значение Y на экране}

MASHT = 15; {Масштаб при 15: maxY=28, MaxX=38}

STEP = 1; {шаг изменения свободного члена целевой функчии}

{Переменные}

var

Gd, Gm: Integer; {Иниц. гафики}

Matr: TMatrix; {Матрица неравенств}

c: Real; {Свободный член целевой ф-ии}

N: TNerav; {Коэффициенты неравенств}

i: 0 100; {Счетчик кол-ва неравенств}

MainF: TNerav; {Коэффициенты целевой ф-ии}

XResult,YResult: Real; {Ответ(кординаты)}

procedure ShowXOY;{Проц. показа координатных осей}

Begin

SetColor(White);

Line(MinX, MaxY,MinX-4, MaxY+7);{стрелочки у Y}

Line(MinX, MaxY,MinX+4, MaxY+7);

OutTextXY(MinX-15, MaxY, 'У');

MoveTo(MinX, MaxY);

LineTo(MinX, MinY);{Сами оси}

LineTo(MaxX, MinY);

Line(MaxX, MinY, MaxX-7, MinY-4);{стрелочки у X}

Line(MaxX, MinY, MaxX-7, MinY+4);

OutTextXY(MaxX, MinY+5, 'X');

End;

procedure ShowLine(_iN:TNerav);

var s: String;

Begin

if _iN.b/_iN.y<0 then begin{если коэффиц. при Y меньше 0}

MoveTo(MinX+Round((_iN.b-(Round(MinY/MASHT)*_iN.y))/_iN.x*MASHT),MaxY);

SetColor(15);

LineTo(MinX+Round(_iN.b/_iN.x*MASHT),MinY);

end;

if _iN.b/_iN.x<0 then begin{если коэффиц. при X меньше 0}

MoveTo(MinX,MinY-Round(_iN.b/_iN.y*MASHT));

SetColor(15);

LineTo(MaxX,MinY-Round((_iN.b-(Round(MaxX/MASHT)*_iN.x))/_iN.y*MASHT));

Реферат опубликован: 3/01/2008