Exercício Resolvido
Resolvendo o Problema
-
Primeiro definimos o argumento da função e sua saída.
Function CeDuLaS(X As Integer) As Variant
-
Criamos as variáveis: uma para cédula e uma variável para ser o resto.
Dim N100 As Integer
Dim N50 As Integer
Dim N20 As Integer
Dim N10 As Integer
Dim N5 As Integer
Dim N2 As Integer
Dim N1 As Integer
Dim Rest As Double
Rest = X
-
Calculamos a parte inteira da divisão do input por cada valor de cédula possível, começando pela maior (100), e gradativamente levando seu resto a menor (dado que estamos buscando minimizar a quantidade de notas).
N100 = Int(Rest / 100)
Rest = Rest - (N100 * 100)
N50 = Int(Rest / 50)
Rest = Rest - (N50 * 50)
N20 = Int(Rest / 20)
Rest = Rest - (N20 * 20)
N10 = Int(Rest / 10)
Rest = Rest - (N10 * 10)
N5 = Int(Rest / 5)
Rest = Rest - (N5 * 5)
N2 = Int(Rest / 2)
Rest = Rest - (N2 * 2)
N1 = Rest
-
Para deixar a resposta mais clara optamos por mostra-lá como um vetor, onde cada elemento equivale a uma quantidade de determinada cédula.
CeDuLaS = Array(N100, N50, N20, N10, N5, N2, N1)
'CeDuLas = N100 & "(100)" & N50 & "(50)" & N20 & "(20)" & N10 & "(10)" & N5 & "(5)" & N2 & "(2)" & N1 & "(1)"
'Caso a resposta fosse dada em uma única linha
Código Consolidado
Function CeDuLaS(X As Integer) As Variant
Dim N100 As Integer
Dim N50 As Integer
Dim N20 As Integer
Dim N10 As Integer
Dim N5 As Integer
Dim N2 As Integer
Dim N1 As Integer
Dim Rest As Double
Rest = X
N100 = Int(Rest / 100)
Rest = Rest - (N100 * 100)
N50 = Int(Rest / 50)
Rest = Rest - (N50 * 50)
N20 = Int(Rest / 20)
Rest = Rest - (N20 * 20)
N10 = Int(Rest / 10)
Rest = Rest - (N10 * 10)
N5 = Int(Rest / 5)
Rest = Rest - (N5 * 5)
N2 = Int(Rest / 2)
Rest = Rest - (N2 * 2)
N1 = Rest
CeDuLaS = Array(N100, N50, N20, N10, N5, N2, N1)
'CeDuLas = N100 & "(100)" & N50 & "(50)" & N20 & "(20)" & N10 & "(10)" & N5 & "(5)" & N2 & "(2)" & N1 & "(1)"
'Caso a resposta fosse dada em uma única linha
End Function
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE