
Покупатель должен заплатить в кассу S р. У него имеются 1, 2, 5, 10, 50, 100, 500 р. Сколько купюр
разного достоинства отдаст покупатель, если он начинает платить с самых крупных? На VBA , без массивов

Ответы на вопрос

Private Sub CommandButton1_Click()
Dim s As Integer, z As Integer
Dim t As String
t = "Для оплате в кассе необходимы:"
s = CInt(InputBox("Введите сумму оплаты"))
Do While s > 0
If s >= 500 Then
s = s - 500: k = k + 1
ElseIf s >= 200 Then
s = s - 200: m = m + 1
ElseIf s >= 100 Then
s = s - 100: n = n + 1
ElseIf s >= 50 Then
s = s - 50: z = z + 1
ElseIf s >= 10 Then
s = s - 10: v = v + 1
ElseIf s >= 5 Then
s = s - 5: h = h + 1
ElseIf s >= 2 Then
s = s - 2: f = f + 1
ElseIf s >= 1 Then
s = s - 1: d = d + 1
End If
Loop
If k > 0 Then
t = t + " " & k & " по 500 рублей, "
t = t + " " & m & " по 200 рублей, "
t = t + " " & n & " по 100 рублей, "
t = t + " " & z & " по 50 рублей, "
t = t + " " & v & " по 10 рублей, "
t = t + " " & h & " по 5 рублей, "
t = t + " " & f & " по 2 рублей, "
t = t + " " & d & " по 1 рублей, "
Cells(10, 1) = t
End If
End Sub



Для решения этой задачи мы можем использовать цикл, который будет перебирать все возможные купюры в порядке убывания и отнимать их номинал от суммы, которую нужно заплатить, пока эта сумма не станет равной 0. Каждый раз, когда мы отнимаем номинал купюры от суммы, мы увеличиваем счетчик для этой купюры.
Вот код на VBA, который решает эту задачу:
vbnetSub CountNotes()
Dim S As Integer
Dim Count500, Count100, Count50, Count10, Count5, Count2, Count1 As Integer
'Вводим сумму, которую нужно заплатить
S = InputBox("Введите сумму, которую нужно заплатить:")
'Перебираем купюры в порядке убывания
Do While S > 0
If S >= 500 Then
S = S - 500
Count500 = Count500 + 1
ElseIf S >= 100 Then
S = S - 100
Count100 = Count100 + 1
ElseIf S >= 50 Then
S = S - 50
Count50 = Count50 + 1
ElseIf S >= 10 Then
S = S - 10
Count10 = Count10 + 1
ElseIf S >= 5 Then
S = S - 5
Count5 = Count5 + 1
ElseIf S >= 2 Then
S = S - 2
Count2 = Count2 + 1
ElseIf S >= 1 Then
S = S - 1
Count1 = Count1 + 1
End If
Loop
'Выводим результаты
MsgBox "Количество купюр:" & vbCrLf & "500 руб.: " & Count500 & vbCrLf & "100 руб.: " & Count100 & vbCrLf & "50 руб.: " & Count50 & vbCrLf & "10 руб.: " & Count10 & vbCrLf & "5 руб.: " & Count5 & vbCrLf & "2 руб.: " & Count2 & vbCrLf & "1 руб.: " & Count1
End Sub
После запуска этого кода программа запросит у пользователя сумму, которую нужно заплатить, и выведет количество купюр разного достоинства, которые нужно отдать. Например, если пользователь введет 1234 рубля, то программа выведет следующее сообщение:
Количество купюр: 500 руб.: 2 100 руб.: 2 50 руб.: 1 10 руб.: 3 2 руб.: 2


Топ вопросов за вчера в категории Информатика








Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili