1. Общие сведения
Данная программа предназначена для нахождения оптимального набора предметов, характеризующихся массой и стоимостью одного предмета. За параметр оптимизации принимается максимальная цена набора. Программа может применяться в учебных целях для проверки правильности решения учащимися задачи о рюкзаке.
2. Структура программы
Программа состоит из двух модулей:
- модуля главного окна;
- модуля окна справки.
2.1 Главное окно
Модуль главного окна содержит следующие функции:
2.1.1 TCalcWin::TCalcWin(TComponent* Owner)
Конструктор формы главного окна. Создаёт главное окно программы и все его компоненты, а также задаёт первоначальный вид таблицы масс и цен.
2.1.2 void __fastcall TCalcWin::AddGoodsClick(TObject *Sender)
Функция обработки нажатия кнопки «Добавить столбец». Добавляет один столбец в конец таблицы масс и цен. При необходимости раздвигает окно программы до края экрана.
2.1.3 void __fastcall TCalcWin::DelGoodsClick(TObject *Sender)
Функция обработки нажатия кнопки «Удалить столбец». Удаляет столбец таблицы масс и цен. При необходимости уменьшает ширину окна программы до исходного размера.
2.1.4 void __fastcall TCalcWin::CalcPriceClick(TObject *Sender)
Функция обработки нажатия кнопки «Рассчитать». Производит проверку размерности введённых исходных данных, расчеты по основному алгоритму и вывод результатов. Содержит следующие переменные:
- mas – массив масс товаров;
- price – массив цен товаров;
- М – заданная масса оптимального набора;
- N – количество видов товаров;
- k – вспомогательная переменная;
- m – переменная для хранения массы текущего набора товаров;
- min – масса самого лёгкого товара;
- max – максимальная цена текущего варианта набора товаров;
- cnt – переменная для подсчёта количества товара определённого вида в оптимальном наборе;
- f – массив стоимостей оптимальных наборов товаров;
- f1 – массив номеров товаров, включаемых в различные оптимальные наборы;
- f2 – массив масс оптимальных наборов;
- f3 – массив номеров товаров, составляющих искомый оптимальный набор;
i, j – счётчики циклов;
s – строка для накопления исходных данных.
2.1.5 void __fastcall TCalcWin::CapacityKeyPress(TObject *Sender, char &Key)
Функция обработки ввода в поле Грузоподъёмность. Производит проверку вводимых символов и устраняет недопустимые.
2.1.6 void __fastcall TCalcWin::LoadFlClick(TObject *Sender)
Функция загружает тестовые данные из файла Sample.txt, который должен находиться в том же каталоге, что и исполняемый файл. Соднржит следующие переменные:
- list – список строк для загрузки данных из файла;
- rez – запись с результатами поиска файла.
2.1.7 void __fastcall TCalcWin::InfClick(TObject *Sender)
Функция вывода информации о программе. Выводит служебное окно с информацией об авторе программы.
2.1.8 void __fastcall TCalcWin::HlpClick(TObject *Sender)
Функция, выводящая окно справки.
2.1.9 void __fastcall TCalcWin::ExitClick(TObject *Sender)
Функция, закрывающая программу.
2.2 Окно справки
Модуль, предназначенный для вывода окна справки. Вызывается из главного окна.
3. Настройка
Программа не требует настройки.
4. Проверка программы
По нажатию кнопки Добавить в таблице должен добавляться один столбец с нулями в первых двух строках.
По нажатию кнопки Удалить из таблицы должен быть удалён последний столбец.
По нажатию кнопки Рассчитать:
- при правильно введённых исходных данных в последнюю строку таблицы выводится количество товаров в оптимальном наборе;
- при не заданной массе оптимального набора (грузоподъёмности рюкзака) выводится сообщение об ошибке и вычисления не производятся;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.