VB-2012 / 2-cеместр / Дневники / Практики-2011 / Практ1-Использ-файлов-в-реш-задач
.docИСПОЛЬЗОВАНИЕ ФАЙЛОВ В РЕШЕНИЕ ЗАДАЧ
Постановка задачи:
Предприятие выпускает несколько видов продукции, на изготовление которых используется сталь. Известно:
-
норма затрат стали на единицу продукции i-го вида (в килограммах);
-
плановое задание на выпуск i-го вида продукции (в штуках).
Определить вид продукции, на который тратят стали больше всего.
Экономико-математическая модель
Потребность в стали на производство і-го вида продукции определяем по формуле
Потребностьі = Нормаі * Количествоі
где Нормаі - затраты стали на изготовление одного продукта і-го вида;
Количествоі –план выпуска продуктов і-го вида;
n –количество видов продукции.
Определить максимальное значение среди величин Потребностьі , если і=1,2,…, n.
Программная реализация
Public Type zap 'Тип данных пользователя. Определен в модуле
Name As String * 10
Norma As Single
Kol As Integer
End Type
Public sved As zap 'Переменная типа данных пользователя
Public i As Integer 'Счетчик записей
Private Sub Command1_Click() ' Кнопка Пополнение
Open Text1 For Random As #1 Len = Len(sved) 'oткрытие файла
i = LOF(1) / Len(sved) + 1 ' номер первой свободной записи
Form2.Show
End Sub
===========================================================
Private Sub Command1_Click() ' Занесение данных в файл работа с Form2
sved.Name = Text1.Text 'Данные по виду продукции
sved.Norma = CSng(Text2.Text)
sved.Kol = CInt(Text3.Text)
Put #1, i, sved 'Запись в файл
i = i + 1
Text1.Text = "" 'Очистка рабочих полей
Text2.Text = "0"
Text3.Text = "0"
End Sub
Private Sub Form_Unload(Cancel As Integer) ' Закрытие файла по закрытию Form2
Close #1
End Sub
============================================================
Private Sub Command2_Click() ' Кнопка Просмотр - Вывод содержимого файла
Dim kol_zap As Integer
Open Text1 For Random As #1 Len = Len(sved) 'Открытие файла
kol_zap = LOF(1) / Len(sved) 'Kоличествo записей файла
Print "Содержимое файла " + Text1.Text
For i = 1 To kol_zap
Get #1, i, sved 'Чтение из файла
Print " ", sved.Name, sved.Norma, sved.Kol 'Печать на форму
Next i
Close #1 'Закрытие файла
End Sub
Private Sub Command3_Click() ' Кнопка Поиск - Вычисление максимальной потребности
Dim Potr, MaxPotr As Single
Dim imax As Integer
Dim kol_zap As Integer
Open Form1.Text1 For Random As #1 Len = Len(sved)
i = 1
Get #1, i, sved
'Вычисление потребности в стали для первого изделия
Potr = sved.Norma * sved.Kol
MaxPotr = Potr
imax = i
kol_zap = LOF(1) / Len(sved)
For i = 2 To kol_zap 'Нахождение максимума
Get #1, i, sved
Potr = sved.Norma * sved.Kol
If Potr > MaxPotr Then
MaxPotr = Potr
imax = i
End If
Next i
Get #1, imax, sved 'Чтение записи с максимальной потребностью
'Отображение результирующей информации
Print "Изделие с максимальной потребностью в стали"
Print Tab(3), "Наименование"; Tab(33); sved.Name
Print Tab(3), "Потребность"; Tab(33); MaxPotr
Close #1
End Sub
Private Sub Form_Unload(Cancel As Integer) ' Закрытие файла по закрытию Form1
Close #1
End Sub