Математическое решение задач с графической иллюстрацией результатов

Автор работы: Пользователь скрыл имя, 10 Ноября 2012 в 10:46, реферат

Описание

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

Содержание

Введение
1 Общая часть
1.1 Постановка задачи
1.2 Описание математического метода решения задачи
1.3 Описание решения поставленной задачи
2 Специальная часть
2.1 Алгоритм работы программы
2.1.1 Процедура создания главной формы
2.1.2 Процедура ввода значений с клавиатуры
2.1.3 Процедура выбора случайных значений
2.1.4 Процедура открытия из текстового файла
2.1.5 Процедура сохранения в текстовый файл
2.1.6 Процедура вычисления
2.1.6.1 Процедура вывод
2.1.6.2 Процедура повтор
2.1.7 Процедура очистки окна вывода информации
2.1.8 Процедура выхода из программы
2.2 Системно – технические требования программы
2.3 Руководство пользователя
Заключение
Литература
Приложение А Листинг программы
Приложение Б Таблица спецификации глобальных переменных

Работа состоит из  1 файл

Документ Microsoft Word2003.doc

— 1.80 Мб (Скачать документ)

cnt :=1;

cnt1:=1;

end;                      end.

 


Форма ввода

unit Unit3;

interface

uses

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

  Dialogs, StdCtrls;

type

  TForm3 = class(TForm)

    OKBtn: TButton;

    CancelBtn: TButton;

    Button2: TButton;

    Button3: TButton;

    GroupBox1: TGroupBox;

    Label1: TLabel;

    Label2: TLabel;

    Button1: TButton;

    Edit1: TEdit;

    Edit2: TEdit;

    ListBox1: TListBox;

    Button5: TButton;

    Button4: TButton;

    SaveDialog1: TSaveDialog;

    OpenDialog1: TOpenDialog;

    procedure Button1Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure OKBtnClick(Sender: TObject);

 

    procedure FormShow(Sender: TObject);

    procedure CancelBtnClick(Sender: TObject);

  private


    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form3: TForm3;

implementation

uses unit1;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

var

x,y: integer;

r: real;

begin

If ((Edit1.Text='') or (Edit2.Text='')) then

begin

  r:= MessageDlg( 'Неверно введены координаты', mtError, [mbOK], 0);

  edit1.Text:='';

edit2.Text:='';

end

else

begin

if Form1.Cnt>50 then r:= MessageDlg( 'Невозможно ввести больше точек', mtError, [mbOK], 0);

x:=StrToInt(Edit1.Text);

y:=StrToInt(Edit2.Text);

if ((x>20 )or (x<-20) or (y>20) or (y<-20)) then

begin

r:= MessageDlg( 'Неверно введены координаты', mtError, [mbOK], 0);

edit1.Text:='';

edit2.Text:='';

end


else

begin

Form1.Point[form1.cnt].X:=x;

Form1.Point[form1.cnt].Y:=y;

ListBox1.Items.Add('('+Edit1.Text+';'+Edit2.Text+')');

Edit1.Text:='';

Edit2.Text:='';

inc(Form1.cnt);

end;

end;

end;

procedure TForm3.Button5Click(Sender: TObject);

var

i,n,x1,y1,d: integer;

begin

  ListBox1.Clear;

  Edit1.Text:='';

  Edit2.Text:='';

  n:=10+random(40);

   for i:=0 to (n-1) do

   begin

    d:=random(2);

    case d of

     0: begin x1:=random(20); y1:=random(20); end;

     1: begin x1:=-random(20); y1:=-random(20); end;

    end;

    ListBox1.Items.Add('('+ intToStr(x1)+';'+intToStr(y1)+')');

    Form1.Point[Form1.Cnt].X:=x1;

    Form1.Point[Form1.Cnt].Y:=y1;

    Inc(Form1.Cnt);

   end;

end;


procedure TForm3.Button4Click(Sender: TObject);

var

s: integer;

begin

listbox1.Clear;

edit1.Text:='';

edit2.Text:='';

for s:=1 to Form1.cnt1-1 do

    begin

     Form1.mas[s].X:=0;

     Form1.mas[s].Y:=0;

    end;

form1.image1.Canvas.FillRect(Form1.image1.Canvas.ClipRect);

Form1.cnt:=1;

Form1.cnt1:=1;

Form1.setka;

OkBtn.Caption:='вывести';

end;

procedure TForm3.Button2Click(Sender: TObject);

var

i, n,j,l, len: integer;

s,s1,s2: string;

begin

  if OpenDialog1.Execute then ListBox1.Items.LoadFromFile(OpenDialog1.FileName);

  for i:=0 to ListBox1.Items.Count-1 do

  begin

   s:=ListBox1.Items[i];

   len:=length(s);

   n:=pos(';',s);

   s1:=copy(s,2,n-2);

   s2:=copy(s,n+1,len-n-1);

   Form1.Point[Form1.Cnt].X:=StrToInt(s1);


   form1.Point[Form1.Cnt].Y:=StrToInt(s2);

   Inc(Form1.Cnt);

end;

end;

procedure TForm3.Button3Click(Sender: TObject);

begin

if SaveDialog1.Execute then ListBox1.Items.SaveToFile(SaveDialog1.FileName);

end;

procedure TForm3.OKBtnClick(Sender: TObject);

var

r: real;

begin

if Form1.cnt<9 then begin r:= MessageDlg( 'Недостаточно точек', mtError, [mbOK], 0); end

else

begin

if OkBtn.Caption='вывести' then begin Form1.vivod; Form1.Show; exit;  end;

if OkBtn.Caption='повторить' then

begin

  Form1.image1.Canvas.FillRect(form1.image1.Canvas.ClipRect);

  Form1.setka;

  Form1.povtor;

  Form1.Show;

end

   end;

end;

procedure TForm3.FormShow(Sender: TObject);

begin

Form1.cnt:=1;

Form1.cnt1:=1;

end;

procedure TForm3.CancelBtnClick(Sender: TObject);

begin


close;

end;

end.

 

Приложение Б


Таблица спецификаций глобальных переменных

Название

тип

назначение

cnt

Integer

Количество  точек множества

Point

Array[] of TPoint

Массив точек  множества

dx, dy

integer

Масштабы по осям Ох,Оу

A,B,C,D,E,F

TPoint

Вершины треугольников

x0,y0

Integer

Точка начала координат

t,q,w,z,u1,v1

integer

Индексы точек  – вершин треугольников




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Таблица спецификации процедур и функций

Название

Формальные  переменные

Типы  переменных

назначение

N7Click

Sender

TObject

Приход на вторую форму

N2Click

Sender

TObject

Очистка canvas

Button2Click

Sender

TObject

Загрузка исходных данных из файла

Button3Click

Sender

TObject

Сохранение  координат в файл

FormCreate

Sender

TObject

Процедура создания главной формы прграммы

Button5Click

Sender

TObject

Генерирует  случайные значения

Button4Click

Sender

TObject

Очищает окно вывода

Button1Click

Sender

TObject

Добавление  данных в массив

vivod

-

-

Ищет и выводит  треугольники

povtor

-

-

Ищет и выводит  треугольники

setka

-

-

Рисует сетку  координат


 

Приложение  В


Функциональная модель

(контекстная  диаграмма)


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

Функциональная  модель

(декомпозиция  контекстной диаграммы)


 

 

 

Блок-схема

 


 


Информация о работе Математическое решение задач с графической иллюстрацией результатов