Читайте также:
|
|
Напишем макрос Деньги для анализа расходования денег за неделю. Программа вычисляет общую сумму денег за неделю, среднее в день, минимальное значение и номер этого дня, максимальное значение и номер этого дня. Все результаты напечатать в одном окне функции MsgBox, заголовок окна: «Деньги за неделю».
В неделе 7 дней, поэтому нам нужен массив на 7 элементов. Деньги считаем в рублях с точностью до сотых (до копеек), поэтому нужны переменные типа Double. Деньги по дням задаются в операторах присваивания, каждый студент вводит свои суммы, но условимся, что минимальные расходы будут во второй день, а максимальные расходы будут в пятый день. Так легче контролировать выполнение программы на всех компьютерах в учебном классе.
Для поиска дня с минимальными расходами предлагается следующий алгоритм. Вас послали узнать, в каком вагоне поезда едет меньше всего пассажиров, запомнить номер этого вагона и число пассажиров. Вы подошли к 1-му вагону и записали в тетрадь: номер вагона – 1 и число пассажиров. Вы подошли ко 2-му вагону и узнали, сколько там пассажиров. Если пассажиров меньше, чем у Вас в тетради, вы зачеркнули предыдущую запись и сделали следующую запись: номер вагона – 2 и число пассажиров. Далее Вы пошли к 3-му вагону, и так – до 7-го. В результате в последней не зачеркнутой записи будет номер вагона и минимальное число пассажиров.
Недостатки алгоритма. Если в поезде будет два или более вагона с одинаковым минимальным числом пассажиров, то будет найден первый вагон с минимальным числом пассажиров.
Напишем текст программы.
Sub Деньги()
'Анализ расходования денег за неделю
Dim a(1 To 7) As Double
Dim k As Long
Dim s As Double 'сумма за неделю
Dim p As Double 'среднее за неделю
Dim mi As Double 'минимум за неделю
Dim ni As Long 'номер минимального дня
Dim ma As Double 'максимум за неделю
Dim na As Long 'номер максимального дня
a(1) = 42.64
a(2) = 18.72
a(3) = 39.48
a(4) = 64.56
a(5) = 80.15
a(6) = 75.27
a(7) = 55.82
s = 0
For k = 1 To 7
s = s + a(k)
Next k
p = s / 7
p = Round(p, 2) 'округляем до копеек
ni = 1: mi = a(1)
For k = 2 To 7
If mi > a(k) Then
ni = k
mi = a(k)
End If
Next k
MsgBox "Всего " & s & " руб." & vbNewLine _
& "Среднее " & p & " руб." & vbNewLine _
& "Минимум " & mi & " руб." & vbNewLine _
& "Номер дня " & ni & vbNewLine _
,, "Деньги за неделю"
End Sub
Функция Round округляет значение до двух знаков после запятой (до копеек). Системная константа строка vbNewLine делает перевод на новую строку в окне MsgBox. В строку функции MsgBox добавлены пробелы так, чтобы печать результатов была выровнена по десятичному разделителю.
Выполним макрос.
Обратите внимание, что в тексте программы десятичный разделитель – точка, а в окне MsgBox – запятая.
Читателю предлагается дописать программу для поиска дня с максимальными расходами.
Дата добавления: 2015-07-11; просмотров: 132 | Нарушение авторских прав