Алгоритм решения задачи
Решение задачи состоит из следующих трех основных этапов
1. Создание файла.
2. Вывод файла.
3. Максимальная потребность.
Укрупненная схема алгоритма представлена на рис. 10.1.
Рис. 10.1. Укрупненная схема алгоритма
На этапе “Создание файла” вводятся данные по каждому виду продукции и сохраняются на диске. Схема алгоритма этого этапа представлена на рис. 10.2.
Рис. 10.2. Схема алгоритма этапа “Создание файла”
На этапе “Вывод файла” осуществляется чтение данных из файла по каждому виду продукции и вывод этих данных на форму. Схема алгоритма этого этапа представлена на рис. 10.3.
Рис. 10.3. Схема алгоритма этапа “Вывод файла”
На этапе “Максимальная потребность” производится чтение данных о первом виде продукции из файла, вычисляется потребность стали на этот вид и предполагается, что расход стали на первый вид продукции будет максимальным. Затем это предположение проверяется путем сравнения с потребностями в стали на другие виды продукции. При этом запоминается номер записи в файле (iМах), в которой находятся данные с максимальной потребностью. Эти данные после полного просмотра файла выводятся на пустую форму. Алгоритм поиска построен в предположении, что в файле имеется не менее двух записей. Схема алгоритма этого этапа представлена на рис. 10.4.
Рис. 10.4. Схема алгоритма этапа “Максимальная потребность”
Структура данных
Для хранения данных о видах продукции на диске в приложении используется файл. Каждый вид продукции характеризуется следующими реквизитами:
· Наименование – строка символов (максимум 7 символов, имеет имя strНаименование);
· Норма – дробное число (тип Single, имеет имя sngНорма);
· Количество – целое число (имеет имя intКоличество);
Эти простые переменные относятся к одному виду продукции, поэтому объединяются в пользовательский тип данных Запись. Для выполнения действий с данными типа Запись в программе используется переменная пользовательского типа udtСведения, которая состоит из перечисленных выше трех полей. Эта переменная используется для записи данных в файл и чтения из него.
Величина Потребность (число дробного типа, имя sngПотребность) хотя и относится к каждому виду продукции, но в файл не помещается, поскольку является вычисляемой и в случае необходимости может быть определена каждый раз.
Переменная udtСведения используется в разных частях приложения. Поэтому она, а также тип Запись, на основе которого определяется эта переменная, описываются в отдельном модуле общих описаний с атрибутом Public (общедоступный).
Там же описывается переменная i целого типа, определяющая номер изделия. Она будет использоваться в кодах различных форм.
Имя файла представляет собой последовательность символов и вводится в текстовом поле, поэтому имеет имя txtИмя_файла.
Для определения количества записей в файле перед началом чтения из него используется переменная intКол_зап. Выбран тип Integer, поскольку предполагается, что в файле не более 32 тыс. записей.
При поиске вида продукции с максимальным расходом стали используется переменная типа sngMaxПотребность и переменная целого типа iMax, в которой хранится номер записи с соответствующими данными.
Используемые в приложении данные представлены в табл. 10.1.
Таблица 10.1
Используемые данные
Реквизит | Имя | Назначение |
Имя файла | txtИмя_файла | Имя файла на диске для хранения данных по всем видам продукции |
Запись | Запись | Тип данных, хранящихся в файле |
Сведения | udtСведения | Переменная типа Запись |
Наименование | strНаименование | Наименование вида продукции, поле в пользова-тельском типе Запись |
Норма | sngНорма | Норма расхода стали на изделие одного вида, поле в пользовательском типе Запись |
Количество | intКоличество | План выпуска изделий одного вида, поле в пользовательском типе Запись |
Потребность | sngПотребность | Потребность в стали на один вид продукции |
МахПотребность | sngMaxПотребность | Максимальная потребность на один вид продукции |
iMax | iMax | Номер записи, в которой хранятся данные по виду продукции с максимальным расходом стали |
Кол. зап. | intКол_зап | Количество записей в файле |
Дата добавления: 2020-10-14; просмотров: 614;