Программный продукт, реализующий сравнительный анализ методов линейного целочисленного программирования

Требования к программному изделию, составу и параметрам технических средств (аппаратные ограничения). Технико-экономическое обоснование целесообразности разработки. Функция, реализующая метод "Северо-западного угла". Модуль Sz, Nst, Venger-m, М1.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 30.09.2013
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Рисунок 3.8

Модуль M1

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

Модуль служит для передачи команд другим модулям. Вызов модуля осуществляется из операционной системы.

Диаграмма передач управления

Схема передачи управления представлена на рисунке 3.9

Рисунок 3.9

Описание формы Form1

Внешний вид формы представлен на рисунке 3.10, 3.11, 3.12.

TabSeet1 - Методы решения задачи о назначениях

Рисунок 3.10

TabSeet2 - Построение графиков скоростей

Рисунок 3.11

TabSeet3 - Построение графиков оптимальности

Рисунок 3.12

Инициирование работы

Инициирование осуществляется запуском из командной строки операционной системы исполняемого файла программного изделия, либо щелчком мыши по пиктограмме изделия в проводнике операционной системы Windows 98/NT/XP и выше.

События, методы, функции модуля

События:

1) событие TForm1::Button1Click(TObject *Sender) - ввод матриц С и Х (SG2, SG3), запуск функции s_zy (метод Северо-Западного угла);

2) событие TForm1::RandomClick(TObject *Sender) - ввод случайной матрицы С (SG2);

3) событие TForm1::Button1Click(TObject *Sender) - ввод матриц С и Х (SG2, SG3), запуск функции s_zy (метод Северо-Западного угла);

4) событие TForm1::Button3Click(TObject *Sender) - ввод матриц С и Х (SG2, SG3), запуск функции fogel_m (метод Фогеля);

5) событие TForm1::Edit1Change(TObject *Sender) - изменение размеров матриц С и Х (SG2, SG3);

6) событие TForm1::FormActivate(TObject *Sender) - активация Form1, ввод случайной матрицы С (SG2);

7) событие TForm1::Button4Click(TObject *Sender) - ввод матриц С и Х (SG2, SG3), запуск функции potenc (метод Потенциалов);

8) событие TForm1::Button5Click(TObject *Sender) - ввод матриц С и Х (SG2, SG3), запуск функции venger (Венгерский метод);

9) событие TForm1::Button6Click(TObject *Sender) - прорисовка нового графика скоростей;

10) событие TForm1::Button7Click(TObject *Sender) - ввод матриц С и Х (SG2, SG3), запуск функции ner_pr1 (метод Не реализованных прибылей (этап 1));

11) событие TForm1::Button8Click(TObject *Sender) - ввод матриц С и Х (SG2, SG3), запуск функции ner_pr2 (метод Не реализованных прибылей (этап 2));

12) событие TForm1::Button10Click(TObject *Sender) - ввод матриц С и Х (SG2, SG3), запуск функции ner_pr3 (метод Не реализованных прибылей (этап 3));

13) событие TForm1::ComboBox1Change(TObject *Sender) - выбор метода для построения графика скоростей на первом этапе;

14) событие TForm1::ComboBox2Change(TObject *Sender) - выбор метода для построения графика скоростей на втором этапе;

15) событие TForm1::ComboBox3Change(TObject *Sender) - выбор метода для построения графика скоростей на третьем этапе;

16) событие TForm1::ComboBox4Change(TObject *Sender) - выбор метода для построения графика оптимальности на первом этапе;

17) событие TForm1::ComboBox5Change(TObject *Sender) - выбор метода для построения графика оптимальности на втором этапе;

18) событие TForm1::Button9Click(TObject *Sender) - добавление графика скоростей;

19) событие TForm1::Button11Click(TObject *Sender) - прорисовка нового графика оптимальности метода;

20) событие TForm1::Button12Click(TObject *Sender) - добавление графика оптимальности метода;

Функции:

1) int s_zy(int *, int *, int nn); - метод Северо-Западного угла (модуль S_z)

2) int nai_st(int *, int *, int nn); - метод Наименьшей стоимости (модуль N_st)

3) int fogel_m(int *, int *, int nn); - метод Фогеля (модуль Fogel)

4) int potenc(int *, int *, int nn); - метод Потенциалов (модуль Potenc_m)

5) int venger(int *, int *, int nn); - Венгерский метод (модуль Venger_m)

6) int ner_pr1(int *, int *, int nn); - метод Не реализованных прибылей (этап 1) (модуль Ner_p1)

7) int ner_pr2(int *, int *, int nn); - метод Не реализованных прибылей (этап 2) (модуль Ner_p2)

8) int ner_pr3(int *, int *, int nn); - метод Не реализованных прибылей (этап 3) (модуль Ner_p3)

Внутренние данные

Описание внутренних данных модуля M1 приводится в таблице 3.1.

Таблица 3.1 - Внутренние данные

Переменная

Тип

Назначение

mas2

Динамический массив типа int

Матрица С

mas3

Динамический массив типа int

Матрица Х

n

Переменная типа int

Размерность матрицы С

sum

Переменная типа int

Значение целевой функции

хn, yn

Переменная типа int

Размерность области прорисовки графиков

tc

Переменная типа int

Точность построения графика

hh

Переменная типа int

Шаг сетки графика

mast

Переменная типа float

Масштаб при прорисовке графиков

tim

TDateTime

Время выполнения метода

i,j

Переменная типа int

Временные счетчики циклов

Процессы обработки

Процессы обработки:

- Ввод данных в модули, реализующие решение задачи о назначениях;

- вызов модулей, реализующих решение задачи о назначениях;

- вывод результатов работы методов на экран;

- прорисовка графиков оценки скоростей работы методов;

- прорисовка графиков оценки оптимальности результатов работы методов.

Нормальное завершение

Нормальное завершение работы модуля осуществляется при закрытии рабочего окна.

Программа и методика испытаний

Объектом испытаний является программный комплекс «Целочисленные методы». Исполняемый файл Main.exe.

Целью испытаний является комплексное тестирование программы на соответствие условиям требований ТЗ.

Состав предъявляемой документации

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

- техническое задание;

- технический проект;

- рабочий проект;

Порядок проведения испытаний включает в себя:

1) проверка межкомпонентного интерфейса;

2) тестирование выполнения функционального назначения отдельными функциональными модулями;

3) комплексное тестирование.

Методы испытаний

Испытания программного продукта были проведены на основе функционального тестирования. Этот метод рассматривает тестируемую программу как черный ящик. При этом внутренняя структура программы не учитывается, тесты строятся на основании функциональных свойств программы, т.е. опираясь на ее функциональные спецификации.

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

3.3 Функциональное тестирование программы

Таблица 3.2 - Функциональные тесты

№ теста

Тестируемая ситуация

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

Планируемый результат

1

Ввод данных в поле размерность матрицы

В поле размерность матрицы введен 0

Выдача сообщения об ошибке

2

Ввод данных в поле размерность матрицы

В поле размерность матрицы введено не число

Выдача сообщения об ошибке

3

Ввод данных в поле размерность матрицы

В поле размерность матрицы введено отрицательное число

Выдача сообщения об ошибке

4

Ввод данных в поле размерность матрицы

В поле размерность матрицы введено нецелое число

Выдача сообщения об ошибке

5

Ввод данных в поле ограничение значений

В поле ограничение значений введен 0

Выдача сообщения об ошибке

6

Ввод данных в поле ограничение значений

Поле ограничение значений пустое

Выдача сообщения об ошибке

7

Ввод данных в поле ограничение значений

В поле ограничение значений введено не число

Выдача сообщения об ошибке

8

Ввод данных в поле ограничение значений

В поле ограничение значений введено отрицательное число

Выдача сообщения об ошибке

9

Ввод данных в поле ограничение значений

В поле ограничение значений введено нецелое число

Выдача сообщения об ошибке

10

Ввод данных в матрицу С

Заполнение пользователем матрицы С не числами

Выдача сообщения об ошибке

11

Ввод данных в матрицу С

Заполнение пользователем матрицы С нецелыми числами

Выдача сообщения об ошибке

12

Ввод данных поле выбора методов для построения графиков скоростей

Методы для построения графиков скоростей не заданы

Блокирование функции построения графиков скоростей

13

Ввод данных поле выбора методов для построения графиков оптимальностей

Методы для построения графиков оптимальности не заданы

Блокирование функции построения графиков оптимальности

14

Ввод данных поле выбора методов для построения графиков скоростей

Методы для построения графиков скоростей заданы

Построения графиков скоростей

15

Ввод данных поле выбора методов для построения графиков оптимальностей

Методы для построения графиков оптимальности заданы

Построения графиков оптимальности

16

Запуск метода Северо-Западного угла

(модуль S_z)

Матрица С

6 1 6 3

5 0 5 0

6 9 5 0

7 8 4 6

Матрица Х

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

Целевая функция = 17

17

Запуск метода Наименьшей стоимости

(модуль N_st)

Матрица С

6 1 6 3

5 0 5 0

6 9 5 0

7 8 4 6

Матрица Х

1 0 0 0

0 1 0 0

0 0 0 1

0 0 1 0

Целевая функция = 10

18

Запуск метода Фогеля

(модуль Fogel)

Матрица С

6 1 6 3

5 0 5 0

6 9 5 0

7 8 4 6

Матрица Х

0 1 0 0

1 0 0 0

0 0 0 1

0 0 1 0

Целевая функция = 10

19

Запуск метода Не реализованных прибылей(этап 1)

Ner_p1

Матрица С

6 1 6 3

5 0 5 0

6 9 5 0

7 8 4 6

Матрица Х

1 0 0 0

0 1 0 0

0 0 0 1

0 0 1 0

Целевая функция = 10

20

Запуск Венгерского метода

(модуль Venger_m)

Матрица С

4 0 9 4

0 7 0 0

6 4 5 9

4 4 0 2

Матрица Х

0 1 0 0

1 0 0 0

0 0 0 1

0 0 1 0

Целевая функция = 6

21

Запуск методов

Северо-Западного угла и Не реализованных прибылей (этап 2)

(модули S_z, Ner_p2)

Матрица С

4 0 9 4

0 7 0 0

6 4 5 9

4 4 0 2

Матрица Х

0 1 0 0

1 0 0 0

0 0 1 0

0 0 0 1

Целевая функция = 7

22

Запуск методов

Наименьшей стоимости и Потенциалов

(модули N_st, Potenc_m)

Матрица С

4 0 9 4

0 7 0 0

6 4 5 9

4 4 0 2

Матрица Х

0 1 0 0

1 0 0 0

0 0 0 1

0 0 1 0

Целевая функция = 6

23

Запуск методов

Северо-Западного угла, Не реализованных прибылей (этап 2), Не реализованных прибылей (этап 3)

(модули S_z, Ner_p2,Ner_p3)

Матрица С

1 0 4 5

1 9 3 0

3 7 0 4

7 0 5 2

Матрица Х

1 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

Целевая функция = 1

24

Запуск методов

Северо-Западного угла, Не реализованных прибылей (этап 2), Потенциалов

(модули S_z, Ner_p2,Potenc_m)

Матрица С

7 6 8 2

0 6 6 9

6 7 4 5

5 0 9 8

Матрица Х

0 0 0 1

1 0 0 0

0 0 1 0

0 1 0 0

Целевая функция = 6

25

Запуск методов

Северо-Западного угла, Потенциалов

(модули S_z, Potenc_m)

Матрица С

7 6 8 2

0 6 6 9

6 7 4 5

5 0 9 8

Матрица Х

0 0 0 1

1 0 0 0

0 0 1 0

0 1 0 0

Целевая функция = 6

26

Запуск методов

Наименьшей стоимости, Не реализованных прибылей (этап 2)

(модули N_st, Ner_p2)

Матрица С

6 1 9 9

3 4 7 7

6 4 4 3

8 9 7 4

Матрица Х

0 1 0 0

1 0 0 0

0 0 1 0

0 0 0 1

Целевая функция = 12

27

Запуск методов

Фогеля, Потенциалов

(модули Fogel, Potenc_m)

Матрица С

6 1 9 9

3 4 7 7

6 4 4 3

8 9 7 4

Матрица Х

0 1 0 0

1 0 0 0

0 0 1 0

0 0 0 1

Целевая функция = 12

28

Запуск методов

Не реализованных прибылей (этап 1), Потенциалов

(модули Ner_p1, Potenc_m)

Матрица С

8 6 9 6

2 4 9 1

5 6 8 8

3 2 3 6

Матрица Х

0 1 0 0

1 0 0 0

0 0 0 1

0 0 1 0

Целевая функция = 15

29

Запуск методов

Наименьшей стоимости, Не реализованных прибылей (этап 2), Потенциалов

(модули N_st, Ner_p2, Potenc_m)

Матрица С

8 6 9 6

2 4 9 1

5 6 8 8

3 2 3 6

Матрица Х

0 1 0 0

1 0 0 0

0 0 0 1

0 0 1 0

Целевая функция = 15

30

Запуск методов

Фогеля, Не реализованных прибылей (этап 2)

(модули Fogel, Ner_p2)

Матрица С

3 7 2 5

6 0 7 6

0 7 0 6

8 9 6 7

Матрица Х

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 1

Целевая функция = 9

31

Запуск методов

Фогеля, Не реализованных прибылей (этап 2), Потенциалов

(модули Fogel, Ner_p2, Potenc_m)

Матрица С

3 7 2 5

6 0 7 6

0 7 0 6

8 9 6 7

Матрица Х

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 1

Целевая функция = 9

32

Запуск методов

Не реализованных прибылей (этап 1), Не реализованных прибылей (этап 2)

(модули Ner_p1, Ner_p2)

Матрица С

6 9 2 6

7 4 9 2

1 1 2 8

5 2 7 7

Матрица Х

0 0 1 0

0 0 0 1

0 1 0 0

1 0 0 0

Целевая функция = 7

33

Запуск методов

Не реализованных прибылей (этап 1), Не реализованных прибылей (этап 2), Не реализованных прибылей (этап 3)

(модули Ner_p1, Ner_p2, Ner_p3)

Матрица С

6 9 2 6

7 4 9 2

1 1 2 8

5 2 7 7

Матрица Х

0 0 1 0

0 0 0 1

0 1 0 0

1 0 0 0

Целевая функция = 7

34

Запуск методов

Наименьшей стоимости, Не реализованных прибылей (этап 2), Не реализованных прибылей (этап 3)

(модули N_st, Ner_p2, Ner_p3)

Матрица С

4 5 5 4

7 8 9 7

0 0 4 7

8 7 8 9

Матрица Х

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

Целевая функция = 19

35

Запуск методов

Фогеля, Не реализованных прибылей (этап 2), Не реализованных прибылей (этап 3)

(модули Fogel, Ner_p2, Ner_p3)

Матрица С

4 5 5 4

7 8 9 7

0 0 4 7

8 7 8 9

Матрица Х

1 0 0 0

0 0 0 1

0 1 0 0

0 0 1 0

Целевая функция = 19

36

Запуск методов

Не реализованных прибылей (этап 1), Не реализованных прибылей (этап 2), Потенциалов

(модули Ner_p1, Ner_p2, Potenc_m)

Матрица С

7 1 0 9

1 8 7 1

0 9 2 7

7 6 8 9

Матрица Х

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

Целевая функция = 1

CПИСОК ЛИТЕРАТУРЫ

1. Зайченко Ю.П. Исследование операций. Киев: Вища школа, 1979.

2. Кузнецов А.В., Сакович В.А., Холод Н.И. ”Высшая математика. Математическое программирование ”, Минск, Вышейшая школа, 2001г.

3. Таха Х. Введение в исследование операций. М.: Мир, 1985.

4. Акулич И.Л. Математическое программирование в примерах и задачах. М.: Высшая школа, 1986.

5. Эддоус М., Стенсфилд Р. Методы принятия решений. М.: Аудит, ЮНИТИ, 1997.

6. Боборыкин В.А. Математические методы решения транспортных задач. Л.: СЗПИ, 1986

7. Бурлак Г.Н. Безопасность работы на компьютере: Организация труда на предприятиях информационного обслуживания: Учеб. пособие. - М.: Финансы и статистика, 1998.

8. Лапшин Г.М. Организация и планирование вычислительных центров в машиностроении. М.: Машиностроение, 1990.

9. Охрана труда в вычислительных центрах. - М.: Машиностроение, 1990.

ПРИЛОЖЕНИЕ 1

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

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "M1.h"

#include "S_z.h"

#include "N_st.h"

#include "Fogel.h"

#include "Potenc_m.h"

#include "Venger_m.h"

#include "Ner_p1.h"

#include "Ner_p2.h"

#include "Ner_p3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

TDateTime tim;

unsigned short h,mi,ss,ms,ss2,ms2;

int tm;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

int s_zy(int *, int *, int nn);

int nai_st(int *, int *, int nn);

int fogel_m(int *, int *, int nn);

int potenc(int *, int *, int nn);

int venger(int *, int *, int nn);

int ner_pr1(int *, int *, int nn);

int ner_pr2(int *, int *, int nn);

int ner_pr3(int *, int *, int nn);

void __fastcall TForm1::Button1Click(TObject *Sender)

{

const n=SG2->ColCount;

int sum;

int *mas2=new int [(n+1)*(n+1)];

int *mas3=new int [n*n];

Button8->Enabled=true;

Button4->Enabled=true;

//очистка матриц

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i<n-1)&&(j<n-1))

{

SG3->Cells[i][j]=0;

}

else

SG2->Cells[i][j]=1;

if((i==n-1)&&(j==n-1))

SG2->Cells[i][j]="";

}

//запись в массив

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i!=n-1)||(j!=n-1))

mas2[i*n+j]=StrToInt(SG2->Cells[i][j]);

}

//запись в массив

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

mas3[i*n+j]=StrToInt(SG3->Cells[i][j]);

}

//

tim= Time();

DecodeTime(tim,h,mi,ss,ms);

s_zy(mas2,mas3,n);

tim= Time();

DecodeTime(tim,h,mi,ss2,ms2);

if(ss2<ss)

ss2=ss2+60;

tm=ss2-ss;

tm=tm*1000;

tm=tm+ms2-ms;

tm=abs(tm);

Label2->Caption=IntToStr(tm);

Label3->Caption=IntToStr(ss)+" "+IntToStr(ms);

Label4->Caption=IntToStr(ss2)+" "+IntToStr(ms2);

//запись из массива

// for (int i=0; i<n; i++)

// for (int j=0; j<n; j++)

// {

// if((i!=n-1)||(j!=n-1))

// SG2->Cells[i][j]=mas2[i*n+j];

// }

//запись из массива

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

SG3->Cells[i][j]=mas3[i*n+j];

}

//результат

sum=0;

int ex=0;

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

if(SG3->Cells[i][j]=="1")

{

ex++;

sum=sum+StrToInt(SG2->Cells[i][j]);

}

}

Label1->Caption="С-З= "+IntToStr(sum)+" Элем= "+IntToStr(ex);

delete [] mas2;

mas2=NULL;

delete [] mas3;

mas3=NULL;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RandomClick(TObject *Sender)

{

const n=SG2->ColCount;

Button8->Enabled=false;

Button4->Enabled=false;

Button10->Enabled=false;

//randomize();

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i<n-1)&&(j<n-1))

{

SG2->Cells[i][j]=IntToStr(random(StrToInt(Edit2->Text)));

SG3->Cells[i][j]=0;

}

else

SG2->Cells[i][j]=1;

if((i==n-1)&&(j==n-1))

SG2->Cells[i][j]="";

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

const n=SG2->ColCount;

int sum;

int *mas2=new int [(n+1)*(n+1)];

int *mas3=new int [n*n];

Button8->Enabled=true;

Button4->Enabled=true;

//очистка матриц

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i<n-1)&&(j<n-1))

{

SG3->Cells[i][j]=0;

}

else

SG2->Cells[i][j]=1;

if((i==n-1)&&(j==n-1))

SG2->Cells[i][j]="";

}

//запись в массив

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i!=n-1)||(j!=n-1))

mas2[i*n+j]=StrToInt(SG2->Cells[i][j]);

}

//запись в массив

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

mas3[i*n+j]=StrToInt(SG3->Cells[i][j]);

}

//

tim= Time();

DecodeTime(tim,h,mi,ss,ms);

nai_st(mas2,mas3,n);

tim= Time();

DecodeTime(tim,h,mi,ss2,ms2);

if(ss2<ss)

ss2=ss2+60;

tm=ss2-ss;

tm=tm*1000;

tm=tm+ms2-ms;

tm=abs(tm);

Label2->Caption=IntToStr(tm);

Label3->Caption=IntToStr(ss)+" "+IntToStr(ms);

Label4->Caption=IntToStr(ss2)+" "+IntToStr(ms2);

//запись из массива

// for (int i=0; i<n; i++)

// for (int j=0; j<n; j++)

// {

// if((i!=n-1)||(j!=n-1))

// SG2->Cells[i][j]=mas2[i*n+j];

// }

//запись из массива

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

SG3->Cells[i][j]=mas3[i*n+j];

}

//результат

sum=0;

int ex=0;

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

if(SG3->Cells[i][j]=="1")

{

ex++;

sum=sum+StrToInt(SG2->Cells[i][j]);

}

}

Label1->Caption="Наим. ст.= "+IntToStr(sum)+" Элем= "+IntToStr(ex);

delete [] mas2;

mas2=NULL;

delete [] mas3;

mas3=NULL;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

const n=SG2->ColCount;

int sum,t,shtr;

int *mas2=new int [(n+2)*(n+2)];

int *mas3=new int [n*n];

Button8->Enabled=true;

Button4->Enabled=true;

//int tm;

//очистка матриц

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i<n-1)&&(j<n-1))

{

SG3->Cells[i][j]=0;

}

else

SG2->Cells[i][j]=1;

if((i==n-1)&&(j==n-1))

SG2->Cells[i][j]="";

}

//SG2->ColCount=n+1;

//SG2->RowCount=n+1;

//запись в массив

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i!=n-1)||(j!=n-1))

mas2[i*(n+1)+j]=StrToInt(SG2->Cells[i][j]);

}

//запись в массив

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

mas3[i*n+j]=StrToInt(SG3->Cells[i][j]);

}

//

tim= Time();

DecodeTime(tim,h,mi,ss,ms);

fogel_m(mas2,mas3,n);

tim= Time();

DecodeTime(tim,h,mi,ss2,ms2);

if(ss2<ss)

ss2=ss2+60;

tm=ss2-ss;

tm=tm*1000;

tm=tm+ms2-ms;

tm=abs(tm);

Label2->Caption=IntToStr(tm);

Label3->Caption=IntToStr(ss)+" "+IntToStr(ms);

Label4->Caption=IntToStr(ss2)+" "+IntToStr(ms2);

//запись из массива

// for (int i=0; i<n; i++)

// for (int j=0; j<n; j++)

// {

// if((i!=n-1)||(j!=n-1))

// SG2->Cells[i][j]=mas2[i*(n+1)+j];

// }

//запись из массива

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

SG3->Cells[i][j]=mas3[i*n+j];

}

//результат

sum=0;

int ex=0;

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

if(SG3->Cells[i][j]=="1")

{

ex++;

sum=sum+StrToInt(SG2->Cells[i][j]);

}

}

Label1->Caption="Фогель= "+IntToStr(sum)+" Элем= "+IntToStr(ex);

//SG2->ColCount=n;

//SG2->RowCount=n;

delete [] mas2;

mas2=NULL;

delete [] mas3;

mas3=NULL;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Change(TObject *Sender)

{

SG2->ColCount=StrToInt(Edit1->Text)+1;

SG2->RowCount=StrToInt(Edit1->Text)+1;

SG3->ColCount=StrToInt(Edit1->Text);

SG3->RowCount=StrToInt(Edit1->Text);

Form1->RandomClick(Sender);

//SG2->DefaultColWidth=63-StrToInt(Edit1->Text);

//SG2->DefaultRowHeight=63-StrToInt(Edit1->Text);

//SG3->DefaultColWidth=63-StrToInt(Edit1->Text);

//SG3->DefaultRowHeight=63-StrToInt(Edit1->Text);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)

{

Form1->RandomClick(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

const n=SG2->ColCount;

int sum;

int *mas2=new int [(n+1)*(n+1)];

int *mas3=new int [n*n];

//очистка матриц

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i<n-1)&&(j<n-1))

{

}

else

SG2->Cells[i][j]=1;

if((i==n-1)&&(j==n-1))

SG2->Cells[i][j]="";

}

//запись в массив

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i!=n-1)||(j!=n-1))

mas2[i*n+j]=StrToInt(SG2->Cells[i][j]);

}

//запись в массив

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

mas3[i*n+j]=StrToInt(SG3->Cells[i][j]);

if((i==n-2)&&(mas3[i*n+j]!=1))

mas3[i*n+j]=2;

}

//

tim= Time();

DecodeTime(tim,h,mi,ss,ms);

potenc(mas2,mas3,n);

tim= Time();

DecodeTime(tim,h,mi,ss2,ms2);

if(ss2<ss)

ss2=ss2+60;

tm=ss2-ss;

tm=tm*1000;

tm=tm+ms2-ms;

tm=abs(tm);

Label2->Caption=IntToStr(tm);

Label3->Caption=IntToStr(ss)+" "+IntToStr(ms);

Label4->Caption=IntToStr(ss2)+" "+IntToStr(ms2);

//запись из массива

// for (int i=0; i<n; i++)

// for (int j=0; j<n; j++)

// {

// if((i!=n-1)||(j!=n-1))

// SG2->Cells[i][j]=mas2[i*n+j];

// }

//запись из массива

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

SG3->Cells[i][j]=mas3[i*n+j];

if(mas3[i*n+j]==2)

SG3->Cells[i][j]=0;

}//результат

sum=0;

int ex=0;

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

if(SG3->Cells[i][j]=="1")

{

ex++;

sum=sum+StrToInt(SG2->Cells[i][j]);

}

}

Label1->Caption="Потенц= "+IntToStr(sum)+" Элем= "+IntToStr(ex);

delete [] mas2;

mas2=NULL;

delete [] mas3;

mas3=NULL;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)

{

const n=SG2->ColCount;

int sum;

int *mas2=new int [(n+1)*(n+1)];

int *mas3=new int [n*n];

Button8->Enabled=true;

Button4->Enabled=true;

//очистка матриц

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i<n-1)&&(j<n-1))

{

SG3->Cells[i][j]=0;

}

else

SG2->Cells[i][j]=1;

if((i==n-1)&&(j==n-1))

SG2->Cells[i][j]="";

}

//запись в массив

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i!=n-1)||(j!=n-1))

mas2[i*n+j]=StrToInt(SG2->Cells[i][j]);

}

//запись в массив

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

mas3[i*n+j]=StrToInt(SG3->Cells[i][j]);

}

//

tim= Time();

DecodeTime(tim,h,mi,ss,ms);

venger(mas2,mas3,n);

tim= Time();

DecodeTime(tim,h,mi,ss2,ms2);

if(ss2<ss)

ss2=ss2+60;

tm=ss2-ss;

tm=tm*1000;

tm=tm+ms2-ms;

tm=abs(tm);

Label2->Caption=IntToStr(tm);

Label3->Caption=IntToStr(ss)+" "+IntToStr(ms);

Label4->Caption=IntToStr(ss2)+" "+IntToStr(ms2);

//запись из массива

// for (int i=0; i<n; i++)

// for (int j=0; j<n; j++)

// {

// if((i!=n-1)||(j!=n-1))

// SG2->Cells[i][j]=mas2[i*n+j];

// }

//запись из массива

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

SG3->Cells[i][j]=mas3[i*n+j];

}

//результат

sum=0;

int ex=0;

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

if(SG3->Cells[i][j]=="1")

{

ex++;

sum=sum+StrToInt(SG2->Cells[i][j]);

}

}

Label1->Caption="Венгерский= "+IntToStr(sum)+" Элем= "+IntToStr(ex);

delete [] mas2;

mas2=NULL;

delete [] mas3;

mas3=NULL;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)

{

int xn,yn,n,hh,xh,yh,tc;

float mast;

tc=StrToInt(Edit11->Text);

mast=StrToFloat(Edit5->Text);

n=StrToInt(Edit3->Text)-3;

hh=StrToInt(Edit4->Text);

xh=0;

xn=Image1->Width;

yn=Image1->Height;

Image1->Canvas->Pen->Width=1;

Image1->Canvas->Pen->Color=clBlue;

Image1->Canvas->Rectangle(0,0,xn,yn);

for(int i=1;i<=xn/hh;i++)

{

Image1->Canvas->MoveTo(hh*i,yn);

Image1->Canvas->LineTo(hh*i,0);

}

for(int i=1;i<=yn/hh;i++)

{

Image1->Canvas->MoveTo(0,hh*i);

Image1->Canvas->LineTo(xn,hh*i);

}

for(int i=1;i<=10;i++)

{

int ms;

ms=((i*(n+3)/10)); // /(mast/100)

Image1->Canvas->TextOut(i*xn/10,yn/2,ms);

}

for(int i=1;i<=10;i++)

{

int ms;

ms=((i*yn/10)/(mast/100));

if(i!=5)

Image1->Canvas->TextOut(hh,yn-i*yn/10,ms);

}

//Label26->Caption=ms;

Image1->Canvas->Pen->Width=2;

Image1->Canvas->Pen->Color=clGreen;

Image1->Canvas->MoveTo(0,yn/2);

Image1->Canvas->LineTo(xn,yn/2);

Image1->Canvas->Pen->Width=3;

Image1->Canvas->Pen->Color=clGray;

Image1->Canvas->MoveTo(xh,yn);

Label12->Caption=1;

int d;

d=(n+3)%10;

if (d>4) d=(n+3)/10;

else d=0;

for(int i=0;i<=(n+3)-d;i=i+(n+3)/10)

{

Label5->Caption=StrToInt(i);

Form1->Edit1->Text=i;

Form1->Edit1Change(Sender);

int tmm=0;

if((CheckBox1->Checked==true)&&(CheckBox6->Checked==false)&&(CheckBox7->Checked==false)) //С-З

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button1Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox2->Checked==true)&&(CheckBox6->Checked==false)&&(CheckBox7->Checked==false)) //Наимен

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button2Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox3->Checked==true)&&(CheckBox6->Checked==false)&&(CheckBox7->Checked==false)) //Фогель

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button3Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox4->Checked==true)&&(CheckBox6->Checked==false)&&(CheckBox7->Checked==false)) //Нерез(1)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button7Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox5->Checked==true)&&(CheckBox6->Checked==false)&&(CheckBox7->Checked==false)) //Венгерск

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button5Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm/tc+i/2+tmm/tc;

//tm=tmm;

}

if((CheckBox1->Checked==true)&&(CheckBox6->Checked==true)) //С-З - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button1Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox2->Checked==true)&&(CheckBox6->Checked==true)) //Наимен - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button2Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox3->Checked==true)&&(CheckBox6->Checked==true)) //Фогель - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button3Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox4->Checked==true)&&(CheckBox6->Checked==true)) //Нерез(1) - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button7Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox1->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==false)) //С-З - Нер(2)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button1Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox2->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==false)) //Наимен - Нер(2)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button2Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox3->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==false)) //Фогель - Нер(2)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button3Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox4->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==false)) //Нер(1) - Нер(2)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button7Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox4->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==true)) //Нер(1) - Нер(2) - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button7Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox1->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==true)) //С-З - Нер(2) - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button1Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox2->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==true)) //Наимен - Нер(2) - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button2Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox3->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==true)) //Фогель - Нер(2) - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button3Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

//

if((CheckBox4->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox9->Checked==true)) //Нер(1) - Нер(2) - Нер(3)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button7Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button10Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox1->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox9->Checked==true)) //С-З - Нер(2) - Нер(3)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button1Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button10Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox2->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox9->Checked==true)) //Наимен - Нер(2) - Нер(3)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button2Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button10Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox3->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox9->Checked==true)) //Фогель - Нер(2) - Нер(3)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button3Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button10Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

Image1->Canvas->LineTo(xh,yn-(tm*(mast/100))); //*(mast/100)

xh=xh+xn/10;

if((yn-(tm*(mast/100)))<0)

i=n+3;

Refresh();

}

Image1->Canvas->TextOut((xh-xn/10+hh),yn-hh-(tm*(mast/100)),IntToStr(tm));//*(mast/100)

Label5->Caption="OK";

Button9->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button7Click(TObject *Sender)

{

const n=SG2->ColCount;

int sum;

int *mas2=new int [(n+1)*(n+1)];

int *mas3=new int [n*n];

Button8->Enabled=true;

Button4->Enabled=true;

//очистка матриц

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i<n-1)&&(j<n-1))

{

SG3->Cells[i][j]=0;

}

else

SG2->Cells[i][j]=1;

if((i==n-1)&&(j==n-1))

SG2->Cells[i][j]="";

}

//запись в массив

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i!=n-1)||(j!=n-1))

mas2[i*n+j]=StrToInt(SG2->Cells[i][j]);

}

//запись в массив

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

mas3[i*n+j]=StrToInt(SG3->Cells[i][j]);

}

//

tim= Time();

DecodeTime(tim,h,mi,ss,ms);

ner_pr1(mas2,mas3,n);

tim= Time();

DecodeTime(tim,h,mi,ss2,ms2);

if(ss2<ss)

ss2=ss2+60;

tm=ss2-ss;

tm=tm*1000;

tm=tm+ms2-ms;

tm=abs(tm);

Label2->Caption=IntToStr(tm);

Label3->Caption=IntToStr(ss)+" "+IntToStr(ms);

Label4->Caption=IntToStr(ss2)+" "+IntToStr(ms2);

//запись из массива

// for (int i=0; i<n; i++)

// for (int j=0; j<n; j++)

// {

// if((i!=n-1)||(j!=n-1))

// SG2->Cells[i][j]=mas2[i*n+j];

// }

//запись из массива

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

SG3->Cells[i][j]=mas3[i*n+j];

}

//результат

sum=0;

int ex=0;

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

if(SG3->Cells[i][j]=="1")

{

ex++;

sum=sum+StrToInt(SG2->Cells[i][j]);

}

}

Label1->Caption="Нере. приб.(1)= "+IntToStr(sum)+" Элем= "+IntToStr(ex);

delete [] mas2;

mas2=NULL;

delete [] mas3;

mas3=NULL;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button8Click(TObject *Sender)

{

const n=SG2->ColCount;

int sum;

int *mas2=new int [(n+1)*(n+1)];

int *mas3=new int [n*n];

Button10->Enabled=true;

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i<n-1)&&(j<n-1))

{

}

else

SG2->Cells[i][j]=1;

if((i==n-1)&&(j==n-1))

SG2->Cells[i][j]="";

}

//запись в массив

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i!=n-1)||(j!=n-1))

mas2[i*n+j]=StrToInt(SG2->Cells[i][j]);

}

//запись в массив

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

mas3[i*n+j]=StrToInt(SG3->Cells[i][j]);

if((i==n-2)&&(mas3[i*n+j]!=1))

mas3[i*n+j]=2;

}

//

tim= Time();

DecodeTime(tim,h,mi,ss,ms);

ner_pr2(mas2,mas3,n);

tim= Time();

DecodeTime(tim,h,mi,ss2,ms2);

if(ss2<ss)

ss2=ss2+60;

tm=ss2-ss;

tm=tm*1000;

tm=tm+ms2-ms;

tm=abs(tm);

Label2->Caption=IntToStr(tm);

Label3->Caption=IntToStr(ss)+" "+IntToStr(ms);

Label4->Caption=IntToStr(ss2)+" "+IntToStr(ms2);

//запись из массива

// for (int i=0; i<n; i++)

// for (int j=0; j<n; j++)

// {

// if((i!=n-1)||(j!=n-1))

// SG2->Cells[i][j]=mas2[i*n+j];

// }

//запись из массива

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

SG3->Cells[i][j]=mas3[i*n+j];

if(mas3[i*n+j]==2)

SG3->Cells[i][j]=0;

}

//результат

sum=0;

int ex=0;

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

if(SG3->Cells[i][j]=="1")

{

ex++;

sum=sum+StrToInt(SG2->Cells[i][j]);

}

}

Label1->Caption="Нрп2= "+IntToStr(sum)+" Элем= "+IntToStr(ex);

delete [] mas2;

mas2=NULL;

delete [] mas3;

mas3=NULL;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox1Click(TObject *Sender)

{

if(CheckBox1->Checked==true)

{

ComboBox2->Clear();

ComboBox3->Clear();

ComboBox2->AddItem("Метод Потенциалов",ComboBox2);

ComboBox2->AddItem("Метод Нереальз приб(2)",ComboBox2);

}

if(CheckBox1->Checked==true)

{

CheckBox2->Checked=false;

CheckBox3->Checked=false;

CheckBox4->Checked=false;

CheckBox5->Checked=false;

CheckBox6->Checked=false;

CheckBox7->Checked=false;

CheckBox8->Checked=false;

CheckBox9->Checked=false;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox2Click(TObject *Sender)

{

if(CheckBox2->Checked==true)

{

ComboBox2->Clear();

ComboBox3->Clear();

ComboBox2->AddItem("Метод Потенциалов",ComboBox2);

ComboBox2->AddItem("Метод Нереальз приб(2)",ComboBox2);

}

if(CheckBox2->Checked==true)

{

CheckBox1->Checked=false;

CheckBox3->Checked=false;

CheckBox4->Checked=false;

CheckBox5->Checked=false;

CheckBox6->Checked=false;

CheckBox7->Checked=false;

CheckBox8->Checked=false;

CheckBox9->Checked=false;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox3Click(TObject *Sender)

{

if(CheckBox3->Checked==true)

{

ComboBox2->Clear();

ComboBox3->Clear();

ComboBox2->AddItem("Метод Потенциалов",ComboBox2);

ComboBox2->AddItem("Метод Нереальз приб(2)",ComboBox2);

}

if(CheckBox3->Checked==true)

{

CheckBox2->Checked=false;

CheckBox1->Checked=false;

CheckBox4->Checked=false;

CheckBox5->Checked=false;

CheckBox6->Checked=false;

CheckBox7->Checked=false;

CheckBox8->Checked=false;

CheckBox9->Checked=false;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox4Click(TObject *Sender)

{

if(CheckBox4->Checked==true)

{

ComboBox2->Clear();

ComboBox3->Clear();

ComboBox2->AddItem("Метод Потенциалов",ComboBox2);

ComboBox2->AddItem("Метод Нереальз приб(2)",ComboBox2);

}

if(CheckBox4->Checked==true)

{

CheckBox2->Checked=false;

CheckBox3->Checked=false;

CheckBox1->Checked=false;

CheckBox5->Checked=false;

CheckBox6->Checked=false;

CheckBox7->Checked=false;

CheckBox8->Checked=false;

CheckBox9->Checked=false;

}

}

//--------------------------------------------------------------------------

void __fastcall TForm1::CheckBox5Click(TObject *Sender)

{

ComboBox2->Clear();

ComboBox3->Clear();

if(CheckBox5->Checked==false)

{

ComboBox2->Clear();

ComboBox3->Clear();

ComboBox2->AddItem("Метод Потенциалов",ComboBox2);

ComboBox2->AddItem("Метод Нереальз приб(2)",ComboBox2);

}

if(CheckBox5->Checked==true)

{

CheckBox2->Checked=false;

CheckBox3->Checked=false;

CheckBox4->Checked=false;

CheckBox1->Checked=false;

CheckBox6->Checked=false;

CheckBox7->Checked=false;

CheckBox8->Checked=false;

CheckBox9->Checked=false;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ComboBox1Change(TObject *Sender)

{

if(ComboBox1->ItemIndex==0)

CheckBox1->Checked=true;

if(ComboBox1->ItemIndex==1)

CheckBox2->Checked=true;

if(ComboBox1->ItemIndex==2)

CheckBox3->Checked=true;

if(ComboBox1->ItemIndex==3)

CheckBox4->Checked=true;

if(ComboBox1->ItemIndex==4)

CheckBox5->Checked=true;

Button6->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ComboBox2Change(TObject *Sender)

{

if(ComboBox2->ItemIndex==0)

CheckBox6->Checked=true;

if(ComboBox2->ItemIndex==1)

CheckBox7->Checked=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox6Click(TObject *Sender)

{

//ComboBox3->Clear();

//CheckBox8->Checked=false;

if(CheckBox6->Checked==true)

{

CheckBox7->Checked=false;

CheckBox8->Checked=false;

CheckBox9->Checked=false;

ComboBox3->Clear();

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox7Click(TObject *Sender)

{

ComboBox3->Clear();

ComboBox3->AddItem("Метод Потенциалов",ComboBox2);

ComboBox3->AddItem("Метод Не реализ приб(3)",ComboBox2);

if(CheckBox7->Checked==true)

{

CheckBox6->Checked=false;

CheckBox8->Checked=false;

CheckBox9->Checked=false;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ComboBox3Change(TObject *Sender)

{

if(ComboBox3->ItemIndex==0)

CheckBox8->Checked=true;

if(ComboBox3->ItemIndex==1)

CheckBox9->Checked=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox8Click(TObject *Sender)

{

if(CheckBox8->Checked==true)

{

CheckBox9->Checked=false;

//ComboBox3->Clear();

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button9Click(TObject *Sender)

{

int xn,yn,n,hh,xh,yh,tc;

float mast;

tc=StrToInt(Edit11->Text);

mast=StrToFloat(Edit5->Text);

n=StrToInt(Edit3->Text)-3;

hh=StrToInt(Edit4->Text);

xh=0;

xn=Image1->Width;

yn=Image1->Height;

Image1->Canvas->Pen->Width=3;

Image1->Canvas->MoveTo(xh,yn);

switch(StrToInt(Label12->Caption))

{

case 1: {Image1->Canvas->Pen->Color=clBlack;Label12->Caption=2;}break;

case 2: {Image1->Canvas->Pen->Color=clGreen;Label12->Caption=3;}break;

case 3: {Image1->Canvas->Pen->Color=clWhite;Label12->Caption=4;}break;

case 4: {Image1->Canvas->Pen->Color=clRed;Label12->Caption=5;}break;

case 5: {Image1->Canvas->Pen->Color=clBlue;Label12->Caption=6;}break;

case 6: {Image1->Canvas->Pen->Color=clMoneyGreen;Label12->Caption=7;}break;

case 7: {Image1->Canvas->Pen->Color=clYellow;Label12->Caption=8;}break;

case 8: {Image1->Canvas->Pen->Color=clGray;Label12->Caption=1;}break;

}

int d;

d=(n+3)%10;

if (d>4) d=(n+3)/10;

else d=0;

for(int i=0;i<=(n+3)-d;i=i+(n+3)/10)

{

Label5->Caption=StrToInt(i);

Form1->Edit1->Text=i;

Form1->Edit1Change(Sender);

int tmm=0;

if((CheckBox1->Checked==true)&&(CheckBox6->Checked==false)&&(CheckBox7->Checked==false)) //С-З

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button1Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox2->Checked==true)&&(CheckBox6->Checked==false)&&(CheckBox7->Checked==false)) //Наимен

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button2Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox3->Checked==true)&&(CheckBox6->Checked==false)&&(CheckBox7->Checked==false)) //Фогель

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button3Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox4->Checked==true)&&(CheckBox6->Checked==false)&&(CheckBox7->Checked==false)) //Нерез(1)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button7Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox5->Checked==true)&&(CheckBox6->Checked==false)&&(CheckBox7->Checked==false)) //Венгерск

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button5Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox1->Checked==true)&&(CheckBox6->Checked==true)) //С-З - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button1Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox2->Checked==true)&&(CheckBox6->Checked==true)) //Наимен - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button2Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox3->Checked==true)&&(CheckBox6->Checked==true)) //Фогель - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button3Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox4->Checked==true)&&(CheckBox6->Checked==true)) //Нерез(1) - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button7Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox1->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==false)) //С-З - Нер(2)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button1Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox2->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==false)) //Наимен - Нер(2)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button2Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox3->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==false)) //Фогель - Нер(2)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button3Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox4->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==false)) //Нер(1) - Нер(2)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button7Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox4->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==true)) //Нер(1) - Нер(2) - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button7Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox1->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==true)) //С-З - Нер(2) - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button1Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox2->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==true)) //Наимен - Нер(2) - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button2Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox3->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox8->Checked==true)) //Фогель - Нер(2) - Патенц

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button3Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button4Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

//

if((CheckBox4->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox9->Checked==true)) //Нер(1) - Нер(2) - Нер(3)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button7Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button10Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox1->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox9->Checked==true)) //С-З - Нер(2) - Нер(3)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button1Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button10Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox2->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox9->Checked==true)) //Наимен - Нер(2) - Нер(3)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button2Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button10Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

if((CheckBox3->Checked==true)&&(CheckBox7->Checked==true)&&(CheckBox9->Checked==true)) //Фогель - Нер(2) - Нер(3)

{

for(int s=1;s<=tc;s++)

{

Form1->RandomClick(Sender);

Form1->Button3Click(Sender);

tmm=tmm+tm;

Form1->Button8Click(Sender);

tmm=tmm+tm;

Form1->Button10Click(Sender);

tmm=tmm+tm;

}

tm=tmm/tc;

//tm=tmm;

}

Image1->Canvas->LineTo(xh,yn-(tm*(mast/100))); //*(mast/100)

xh=xh+xn/10;

if((yn-(tm*(mast/100)))<0)

i=n+3;

Refresh();

}

Image1->Canvas->TextOut((xh-xn/10+hh),yn-hh-(tm*(mast/100)),IntToStr(tm)); //*(mast/100)

Label5->Caption="OK";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit5Change(TObject *Sender)

{

Button12->Enabled=false;

Button9->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit3Change(TObject *Sender)

{

Button12->Enabled=false;

Button9->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit6Change(TObject *Sender)

{

SG2->DefaultColWidth=StrToInt(Edit6->Text);

//SG2->DefaultRowHeight=StrToInt(Edit6->Text);

//SG3->DefaultColWidth=StrToInt(Edit6->Text);

//SG3->DefaultRowHeight=StrToInt(Edit6->Text);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit4Change(TObject *Sender)

{

Button12->Enabled=false;

Button9->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button10Click(TObject *Sender)

{

const n=SG2->ColCount;

int sum;

int *mas2=new int [(n+1)*(n+1)];

int *mas3=new int [n*n];

//TDateTime tim;

//unsigned short h,mi,ss,ms,ss2,ms2;

//int tm;

//очистка матриц

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i<n-1)&&(j<n-1))

{

}

else

SG2->Cells[i][j]=1;

if((i==n-1)&&(j==n-1))

SG2->Cells[i][j]="";

}

//запись в массив

for (int i=0; i<n; i++)

for (int j=0; j<n; j++)

{

if((i!=n-1)||(j!=n-1))

mas2[i*n+j]=StrToInt(SG2->Cells[i][j]);

}

//запись в массив

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

mas3[i*n+j]=StrToInt(SG3->Cells[i][j]);

if((i==n-2)&&(mas3[i*n+j]!=1))

mas3[i*n+j]=0;

}

//

tim= Time();

DecodeTime(tim,h,mi,ss,ms);

ner_pr3(mas2,mas3,n);

tim= Time();

DecodeTime(tim,h,mi,ss2,ms2);

if(ss2<ss)

ss2=ss2+60;

tm=ss2-ss;

tm=tm*1000;

tm=tm+ms2-ms;

tm=abs(tm);

Label2->Caption=IntToStr(tm);

Label3->Caption=IntToStr(ss)+" "+IntToStr(ms);

Label4->Caption=IntToStr(ss2)+" "+IntToStr(ms2);

//запись из массива

// for (int i=0; i<n; i++)

// for (int j=0; j<n; j++)

// {

// if((i!=n-1)||(j!=n-1))

// SG2->Cells[i][j]=mas2[i*n+j];

// }

//запись из массива

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

SG3->Cells[i][j]=mas3[i*n+j];

if(mas3[i*n+j]==2)

SG3->Cells[i][j]=0;

}

//результат

sum=0;

int ex=0;

for (int i=0; i<n-1; i++)

for (int j=0; j<n-1; j++)

{

if(SG3->Cells[i][j]=="1")

{

ex++;

sum=sum+StrToInt(SG2->Cells[i][j]);

}

}

Label1->Caption="Нрп3= "+IntToStr(sum)+" Элем= "+IntToStr(ex);

delete [] mas2;

mas2=NULL;

delete [] mas3;

mas3=NULL;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox9Click(TObject *Sender)

{

if(CheckBox9->Checked==true)

{

CheckBox8->Checked=false;

//ComboBox3->Clear();

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button11Click(TObject *Sender)

{

int xn,yn,n,hh,xh,yh,opt,tc;

float mast,opt_f;

mast=StrToFloat(Edit8->Text);

n=StrToInt(Edit9->Text)-3;

hh=StrToInt(Edit7->Text);

xh=0;

xn=Image2->Width;

yn=Image2->Height;

tc=StrToInt(Edit10->Text);

Image2->Canvas->Pen->Width=1;

Image2->Canvas->Pen->Color=clBlue;

Image2->Canvas->Rectangle(0,0,xn,yn);

for(int i=1;i<=xn/hh;i++)

{

Image2->Canvas->MoveTo(hh*i,yn);


Подобные документы

  • Функциональное и эксплуатационное назначение изделия. Перечень требований пользователя к программному изделию. Программные ограничения, совместимость. Требования к параметрам технических средств. Безопасность и секретность, требования к надежности.

    курсовая работа [574,6 K], добавлен 27.04.2011

  • Функциональное и эксплуатационное назначение изделия, методологические ограничения. Требования к составу и параметрам технических средств. Описание алгоритма, входные и выходные данные. Стадии и этапы разработки, технико-экономическое обоснование.

    курсовая работа [564,4 K], добавлен 18.01.2014

  • Требования к программному изделию и параметрам технических средств. Описание пользовательского интерфейса для автоматизированной системы учёта товаров на оптовом складе. Обоснование выбора языков программирования, организации входных и выходных данных.

    дипломная работа [3,4 M], добавлен 02.04.2013

  • Системный анализ предметной области. Требования к программе и программному изделию, к функциональным характеристикам, к надежности, составу и параметрам технических средств. Обоснование выбора средств выбора для хранения и обработки базы данных.

    реферат [403,8 K], добавлен 02.02.2014

  • Число линейно независимых уравнений. Отрицательная базисная переменная. Симплекс-метод решения задач линейного программирования. Экстремальное значение целевой функции. Метод северо-западного угла. Задачи нелинейного программирования. Функция Лагранжа.

    контрольная работа [257,5 K], добавлен 29.09.2008

  • Исследование методов интерполяции функции и разработка программного продукта для автоматизации расчётов, выполняемых в данных методах. Обоснование выбора языка программирования. Требования к программе и программному изделию. Организация работы с ПЭВМ.

    дипломная работа [2,1 M], добавлен 16.06.2017

  • Назначение и цели создания системы. Требования к программе или программному изделию, к информационной и программной совместимости, к составу и параметрам технических средств. Алгоритм Rijndael. Назначение и условия применения программного продукта.

    дипломная работа [1,3 M], добавлен 01.03.2009

  • Анализ использования разработки, обзор средств программирования и описание языков. Требования к составу и параметрам технических средств. Построение алгоритма и требования к его функциональности. Описание рабочего места на вычислительном центре.

    дипломная работа [2,6 M], добавлен 19.06.2017

  • Математическая модель задачи. Симплекс-таблица. Решение задачи линейного программирования. коэффициенты при переменных в целевой функции. Метод северо-западного угла. Система неравенств в соответствии с теоремой Куна-Таккера. Функция Лагранжа.

    контрольная работа [59,5 K], добавлен 29.09.2008

  • Допустимый план методом северо-западного угла. Два алгоритмических шага: предварительный и общеповторяющийся. Нахождение допустимого ациклического плана. Анализ системы на потенциальность. Изменение значения целевой функции. Перемещение по циклу.

    контрольная работа [27,1 K], добавлен 16.02.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.