Теория множеств

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

анные из файла"

2)Поиск точек Bi для каждой точки множества Ai и вывод на экран

Нажать кнопку "Найти"

Как видно из этого теста, не для всех точек множества AM существует точка B (AB), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB

3)Визуализация точек множества на экране

Нажать кнопку "Изображение"

4)построение прямой AB для указанной точки A.

Сначала построим прямую для точек для которых это возможно.

Например для первой точки.

Для второй точки

Теперь вводим номер точки 5 и нажимаем "Нарисовать пямую"

-я точка обведена другим цветом кружком большего диаметра. Видно, что она находится в центре множества, и при соединении ее с любой их точек остальные будут всегда по разные стороны.

Приложение Г

Руководство пользователя

Введение

Программа предназначена для использования в средних и высших учебных заведениях всех профилей и специализации.

Программное изделие предполагается использовать для наглядного доказательства определения в заданном множества точек M, верно ли, что для каждой точки AM существует точка B (AB), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB

Пользователь должен иметь навыки работы с компьютером в операционной системе Windows.

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

1 Общие сведения о программе

Наименование программы: Программа, позволяющая проверить для заданного множества точек M, верно ли, что для каждой точки AM существует точка B (AB), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Функциональное назначение разработки: решение задачи определения в заданном множества точек M, верно ли, что для каждой точки AM существует точка B (AB), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

Программное обеспечение, необходимое для функционирования программы: программа предназначена для работы в среде Windows XP/Vista/7.

2 Входные данные

  1. Входными данными для Программы являются:
  2. количество точек множества (N);
  3. координаты точек (xi; yi);
  4. Точка Ai, для которой пользователь хочет построить прямую.
  5. Входные данные Программа получает:

- из файла, где они располагаются следующим образом:

пользователь вводит с клавиатуры

3 Выходные данные

Работа с программой

Для запуска программы нужно запустить файл poisktochki.exe. Об успешном запуске свидетельствует появление окна (рис.1.)

Рис. 1 - Главное окно программы

где

"Ввести данные из файла"- кнопка ввода данных из файла data.txt.

"Найти"- кнопка поиска точки B, для каждой точки AM, (AB), такая что не существует двух точек множества M, которые лежат по разные стороны от прямой AB.

"Изображение" - служит для ввода команды нарисовать точки множества в области под кнопкой. Становится доступна после выполнения поиска.

"Нарисовать прямую" - служит для ввода команды рисования на множестве прямой, соединяющей точки в полях ввода слева от кнопки. Становится доступна после отрисовки множества.

Таблица слева содержит в первом столбце номера точек множества, во втором координаты абiисс точек множества, в третьем координаты ординат точек множества, в четвертый выводится номер точки b после поиска.

Приложение Д

ТЕКСТ ПРОГРАММЫ

Unit1;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, Grids, lib;

type

TForm1 = class(TForm): TStringGrid;: TButton;: TImage;: TButton;: TButton;: TButton;: TLabel;: TEdit;: TButton;: TButton;: TEdit;OutPutFileClick(Sender: TObject);SGEnter(Sender: TObject);SearchClick(Sender: TObject);ExitClick(Sender: TObject);MakePictureClick(Sender: TObject);PaintStrClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;

uses picture, Unit2;

{$R *.dfm}XI(XW:real):integer; // перевод в Х-экранную кординатуXI:=Round((XW-Xmin)*Mx+Sx/2) end;YI(YW:real):integer; // перевод в Y-экранную кординатуYI:=Round((Ymax-YW)*My+Sy/2); end;

procedure TForm1.OutPutFileClick(Sender: TObject);

var f:textfile;:integer;,y:integer;(f,'data.txt');(f);(f,nt);i:=1 to nt do(f,x,y);.Cells[0,i]:=floattostr(i);.Cells[1,i]:=floattostr(x);.Cells[2,i]:=floattostr(y);;.Enabled:=True;;

procedure TForm1.SGEnter(Sender: TObject);

begin.Cells[0,0]:='№ точки';.Cells[1,0]:='X';.Cells[2,0]:='Y';.Cells[3,0]:='№ 2-й точки';;

procedure readFromGrid(var nt:integer; var t:mnogina);

var i,j:integer;:=1; j:=1;nt:=0;(Form1.sg.cells[i,j]<>'')do:=nt+1;[j].x:=strtofloat(Form1.sg.cells[i,j]);[j].y:=strtoFloat(Form1.sg.cells[i+1,j]);:=j+1;;;

procedure pryamaya(i,j:integer;var a,b:real);

begint[i].x=t[j].x then:=1;b:=t[i].xt[i].y=t[j].y then:=0;b:=t[i].y:=(t[i].y-t[j].y)/(t[i].x-t[j].x);:=(t[j].y*t[i].x-t[i].y*t[j].x)/(t[i].x-t[j].x);;;

function znak(a,b:real;k,i,j:integer):real;

begin:=t[k].y-a*t[k].x-b;

//(t[k].x-t[i].x)/(t[i].x-t[j].x)-(t[k].y-t[i].y)/(t[i].y-t[j].y)

//;

procedure poisk(i,j:integer;var r:integer);

var k:integer;,b:real;

pryamaya(i,j,a,b);

r:=0;k:=1 to nt do(k=0 then r:=r+1;

end;TForm1.SearchClick(Sender: TObject);

var i,j,r:integer;(nt,t);i:=1 to nt do.SG.Cells[3,i]:='-';i:=1 to nt doj:=1 to nt doi<>j then(i,j,r);(r=0)or(r=nt-2) then sg.Cells[3,i]:=floattostr(j);;

//if (r>0)and(r<nt-2) then sg.Cells[3,i-1]:='-'();.Enabled:=True;;

procedure TForm1.ExitClick(Sender: TObject);

begin;;

procedure TForm1.MakePictureClick(Sender: TObject);

var i:integer;.Picture:=nil;.Canvas.Pen.Color:=clRed;.Canvas.Pen.Width:=2;i:=1 to nt do.Canvas.Ellipse(XI(t[i].x)-3,YI(t[i].y)-3,XI(t[i].x)+3,YI(t[i].y)+3);.Canvas.TextOut(XI(t[i].x)-10,YI(t[i].y)-10,sg.Cells[0,i]);;.Refresh;.Enabled:=true;;

procedure TForm1.PaintStrClick(Sender: TObject);

var i,j:integer;:=strtoint(EditPointNumber.Text);(i>0)and(i'-' then.Text:=sg.Cells[3,i];:=strtoint(sg.Cells[3,i]);.Canvas.MoveTo(XI(t[i].x),YI(t[i].y));.Canvas.LineTo(XI(t[j].x),YI(t[j].y));.Text:='-';.Canvas.Ellipse(XI(t[i].x)-4,YI(t[i].y)-4,XI(t[i].x)+4,YI(t[i].y)+4);;.ShowModal();;.Picture;Classes, Graphics, lib,unit1;minmax();Se