Olá, pensei em disponibilizar esse algoritmo em VisualG, pois quando tinha algumas dúvidas sobre ele, infelizmente, não encontrei muita coisa.
Vamos ao problema:
Elabore um programa no Visualg que calcule o troco a ser fornecido em uma compra, ao ser informado o valor da compra e o valor pago. Além disso, o algoritmo deve fornecer menor número de cédulas de 2,5,10,20,50 e 100 reais, de moedas de 1 real, e de moedas de 1,5,10,25 e 50 centavos a ser dado de troco.
Vamos ao código:
algoritmo "TROCO"
var
//Valor da compra e Valor pago
V1, V2 : real
// X é o troco e a variável M é utilizada para fazer a troca de Real para inteiro
X, M : real
//Y é o valor inteiro do troco utilizado para as cédulas
Y : inteiro
//Z é o valor inteiro das moedas (multiplicado por 100)
Z : inteiro
//N são as cédulas
N50, N20, N10, N5, N2, N1: inteiro
//M são as moedas
M50, M25, M10, M5, M1 : inteiro
Inicio
Escreval ("Valor da compra:")
leia (V1)
Escreval ("Valor Pago:")
leia (V2)
//Aqui vamos obter o troco
X<- V2-V1
//Aqui vamos obter apenas a parte inteira do troco. Exemplo : X= 13,45 , logo o Y= 13
Y<- int(X)
//Aqui vamos pegar a parte "quebrada" do troco, ou seja, as moedas. É o inverso da função anterior.
M<- X-Y
//Aqui vamos transformar o número "quebrado" em número inteiro, ou seja, transforma-lo de Real para Inteiro.
M<- M*100
//Aqui o Z (troco quebrado) recebe a parte inteira de M
Z<- int(M)
Escreval ("Troco=",X)
Se (V1 > V2) então
N50<- (Y div 50)
Y<- (Y mod 50)
N20<- (Y div 20)
Y<- (Y mod 20)
N10<- (Y div 10)
Y<- (Y mod 10)
N5<- (Y div 5)
Y<- (Y mod 5)
N2<- (Y div 2)
Y<- (Y mod 2)
N1<- (Y div 1)
Y<- (Y mod 1)
fimse
Se n50>0 então
Escreval (n50,"_", "Nota(s) de 50")
fimse
Se n20>0 então
Escreval (n20,"_", "Nota(s) de 20")
fimse
Se n10>0 então
Escreval (n10,"_", "Nota(s) de 10")
fimse
Se n5>0 então
Escreval (n5,"_", "Nota(s) de 5")
fimse
Se n2>0 então
Escreval (n2,"_", "Nota(s) de 2")
fimse
Se n1>0 então
Escreval (n1,"_", "Nota(s) de 1")
fimse
Se (V2 > V1) então
M50 <- (Z div 50)
Z <- (Z mod 50)
M25 <- (Z div 25)
Z <- (Z mod 25)
M10 <- (Z div 10)
Z <- (Z mod 10)
M5 <- (Z div 5)
Z <- (Z mod 5)
M1 <- (Z div 1)
Z <- (Z mod 1)
fimse
Se M50>0 então
Escreval (M50,"_", "Moeda(s) de 50 centavos")
fimse
Se M25>0 então
Escreval (M25,"_", "Moeda(s) de 25 centavos")
fimse
Se M10>0 então
Escreval (M10,"_", "Moeda(s) de 10 centavos")
fimse
Se M5>0 então
Escreval (M5,"_", "Moeda(s) de 5 centavos")
fimse
Se M1>0 então
Escreval (M1,"_", "Moeda(s) de 1 centavos")
fimse
fimalgoritmo
Bons estudos !!