Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 15.02.2020
Сообщений: 2
1
Word

Получите все комбинации выплаты суммы п с использованием монет

15.02.2020, 11:21. Показов 2179. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго всем дня, имеется задача:
Дано натуральное число n < 99. Получите все комбинации выплаты суммы n с помощью монет достоинством 1, 5, 10 и 50 коп.

Подскажите как реализовать перебор и вывод значений в документ word по данному условию. Перерыл уже все аналогичные задачи на других языках и никак не пойму принцип работы(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2020, 11:21
Ответы с готовыми решениями:

Определить все способы выплаты определенной суммы с помощью монет заданного достоинства
Выполнить задания путем перебора значений. Ввести с клавиатуры целое число n. Определить все...

Получить все способы выплаты заданной суммы с помощью монет определенного достоинства
Некоторая сумма представлена в натуральным числом N. Получить все способы выплаты этой суммы с...

Способы выплаты суммы n с помощью монет достоинством 1,2,5,10 рублей
нужно составить програлу в делфи. в консольном окне. получить все способы выплаты суммы n с...

Определить число способов выплаты суммы n руб. с помощью монет достоинством 1, 2, 5 рублей
22. Дано натуральное число n(n&lt;100). a) Определить число способов выплаты суммы n руб. с помощью...

4
1185 / 421 / 87
Регистрация: 29.03.2016
Сообщений: 1,013
15.02.2020, 12:49 2
Лучший ответ Сообщение было отмечено Privet129963 как решение

Решение

Перебор вариантов может быть таким:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Sub DoIt2(n As Integer)
    Dim a As Integer, b As Integer, c As Integer, d As Integer, i As Integer
    If n < 1 Or n > 98 Then Exit Sub
    For a = 0 To n \ 50 '50 коп
        For b = 0 To n \ 10 - a * 5 '10 коп
            For c = 0 To n \ 5 - a * 10 - b * 2 '5 коп
                For d = 0 To n - a * 50 - b * 10 - c * 5 '1 коп
                    If a * 50 + b * 10 + c * 5 + d = n Then i = i + 1: Debug.Print i, a, b, c, d
                Next d
            Next c
        Next b
    Next a
End Sub
1
0 / 0 / 0
Регистрация: 15.02.2020
Сообщений: 2
16.02.2020, 13:05  [ТС] 3
Цитата Сообщение от Jamaica Посмотреть сообщение
Перебор вариантов может быть таким:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Sub DoIt2(n As Integer)
    Dim a As Integer, b As Integer, c As Integer, d As Integer, i As Integer
    If n < 1 Or n > 98 Then Exit Sub
    For a = 0 To n \ 50 '50 коп
        For b = 0 To n \ 10 - a * 5 '10 коп
            For c = 0 To n \ 5 - a * 10 - b * 2 '5 коп
                For d = 0 To n - a * 50 - b * 10 - c * 5 '1 коп
                    If a * 50 + b * 10 + c * 5 + d = n Then i = i + 1: Debug.Print i, a, b, c, d
                Next d
            Next c
        Next b
    Next a
End Sub
Спасибо, помогло

Полный код моей программы с выводом в word. На случай если у кого то когда то попадётся аналогичное задание
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Private Sub cmdv_Click()
Dim a As Integer, b As Integer, c As Integer, d As Integer, i As Integer
n = CInt(txtn.Text)
frmm.Hide
Set docNew = Documents.Add
    With Selection
 
      .InsertAfter "Использование циклов For…Next, Do…Loop"
      .ParagraphFormat.Alignment = wdAlignParagraphCenter
      .ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.7)
      .Font.Bold = True
      .Font.Size = 14
      .InsertParagraphAfter
      .InsertParagraphAfter
      .EndOf Unit:=wdSection
      .InsertAfter "Задание. "
      .ParagraphFormat.Alignment = wdAlignParagraphJustify
      .Font.Bold = True
      .EndOf Unit:=wdSection
      .InsertAfter "Составьте программу для решения задачи."
      .Font.Bold = False
       .InsertParagraphAfter
      .EndOf Unit:=wdSection
      .InsertAfter "Программа должна содержать форму с текстовыми полями для ввода данных, кнопками для выполнения расчета и осуществления выхода из программы."
      .Font.Bold = False
      .InsertParagraphAfter
      .EndOf Unit:=wdSection
      .InsertAfter "Условие. "
      .ParagraphFormat.Alignment = wdAlignParagraphJustify
      .Font.Bold = True
      .EndOf Unit:=wdSection
      .InsertAfter "Дано натуральное число n<99. Получите все комбинации выплаты суммы n с помощью монет достоинством 1, 5, 10 и 50 коп."
      .Font.Bold = False
      .InsertParagraphAfter
      .EndOf Unit:=wdSection
      .InsertAfter "Введено значение n=" & n & ""
      .Font.Bold = False
      .EndOf Unit:=wdSection
      .InsertParagraphAfter
      .InsertAfter "Ответы:  "
      .ParagraphFormat.Alignment = wdAlignParagraphJustify
      .Font.Bold = True
      .InsertParagraphAfter
      .EndOf Unit:=wdSection
      
 
If n < 1 Or n > 98 Then Exit Sub
    For a = 0 To n \ 50
        For b = 0 To n \ 10 - a * 5
            For c = 0 To n \ 5 - a * 10 - b * 2
                For d = 0 To n - a * 50 - b * 10 - c * 5
                    If a * 50 + b * 10 + c * 5 + d = n Then
                    i = i + 1:
                    .InsertAfter "Вариант: " & i & ". 50 коп: " & a & ", 10 коп: " & b & ", 5 коп: " & c & ", 1 коп: " & d & "."
                    .Font.Bold = False
                    .InsertParagraphAfter
                    .EndOf Unit:=wdSection
                    End If
                Next d
            Next c
        Next b
    Next a
    End With
 
        
frmm.Show
End Sub
0
6171 / 936 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
18.02.2020, 10:57 4
Лучший ответ Сообщение было отмечено Jamaica как решение

Решение

Цитата Сообщение от Jamaica Посмотреть сообщение
Перебор вариантов может быть таким
Цикл по d лишний, можно количество по 1 копейке вычислять
Visual Basic
1
2
3
4
5
6
7
8
9
    Dim a As Integer, b As Integer, c As Integer, d As Integer, i As Integer
    If n < 1 Or n > 98 Then Exit Function
    For a = 0 To n \ 50
    For b = 0 To (n - a * 50) \ 10
    For c = 0 To (n - a * 50 - b * 10) \ 5
        d = n - a * 50 - b * 10 - c * 5
        i = i + 1
        Debug.Print i, a; b; c; d, a * 50 + b * 10 + c * 5 + d
    Next c, b, a
0
1185 / 421 / 87
Регистрация: 29.03.2016
Сообщений: 1,013
18.02.2020, 20:54 5
Цитата Сообщение от m-ch Посмотреть сообщение
Цикл по d лишний
Дааа...

//задумчиво чешет репу
//слона то я и не приметил
0
18.02.2020, 20:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2020, 20:54
Помогаю со студенческими работами здесь

Вывести все возможные комбинации имеющихся монет
Помогите, пожалуйста ;)

Определить все возможные варианты выплаты суммы N монетами 2 5 10
Нужно написать программу на С++ в консольным режиме.Пользователь вводит число N.и на экран...

Все способы выплаты суммы n с помощью купюр достоинством 1, 5, 10, 20 и 100 долларов
Здравствуйте помогите пожалуйста решить следующую задачу. Ввести с клавиатуры натуральное число n....

Какую сумму Вы получите после выплаты всех налогов.
Предположим, Ваша фирма заработала какую-то сумму денег. По существующему законодательству Вы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru