Algoritmo do Caixa Eletrônico
Você foi contratado como programador por um banco para desenvolver a lógica computacional dos caixas eletrônicos desse banco.
O cliente do banco, ao chegar num caixa eletrônico, informa o valor em reais (R$) que deseja sacar. Os caixas eletrônicos do banco possuem cédulas de R$ 2, R$ 5, R$ 10, R$ 20, R$ 50 e R$ 100 reais. Após o cliente digitar o valor que deseja sacar, o caixa eletrônico deve informar (mostrar na tela) a quantidade de cédulas de R$ 2, R$ 5, R$ 10, R$ 20, R$ 50 e/ou R$ 100 reais que devem ser fornecidas para o cliente. Importante: o caixa eletrônico sempre deverá fornecer para o cliente a menor quantidade de cédulas possíveis.
Caso o cliente informe um valor impossível de ser fornecido, como por exemplo R$ 101 reais, o caixa eletrônico deve apresentar a seguinte mensagem: "O valor solicitado deve ser múltiplo de R$ 2, R$ 5, R$ 10, R$ 20, R$ 50 ou R$ 100 reais!".
Crie um script em Ruby que implemente a lógica do caixa eletrônico e que permita que ela possa ser executada várias vezes, ou seja, permita que vários clientes realizem saques. O script deve parar de permitir saques quando um cliente digitar o valor 0 (zero). A solução desse problema não precisa utilizar, necessariamente, hashes ou arrays.
Respostas
Oi!
Segue abaixo um algoritmo que serve de inspiração e pode ser empregado no caixa eletrônico. Faça pequenas modificações, caso ache pertinente.
Inicio
LEIA (QUANTIDADE DE NOTAS 50, 20, 5);
SE NAO (NOTAS) ENTAO;
LEIA NOTAS INDESPONIVEIS;
ESCREVA ('SEM NOTAS DE ");
ESCREVA ('' QUAL O VALOR DO SEU SAQUE?'');
LEIA (VALOR DO SAQUE );
#include <stdio.h>
int main(){
int iValor, iNota50, iNota10, iNota5, iNota1, iCont;
iValor = iCont = 0;
while(scanf("%d",&iValor), iValor>0) {
iNota50 = iNota10 = iNota5 = iNota1 = 0;
if (iValor >= 50) {
iNota50 = iValor / 50;
iValor = iValor - 50*iNota50;
}
if (iValor >= 10) {
iNota10 = iValor / 10;
iValor = iValor - 10*iNota10;
}
if (iValor >= 5 ) {
iNota5 = iValor / 5;
iValor = iValor - 5*iNota5;
}
if (iValor >= 1 ) {
iNota1 = iValor / 1;
iValor = iValor - iNota1;
}
printf("\nTeste %d\n%d %d %d %d\n", ++iCont, iNota50, iNota10, iNota5, iNota1);
}
return 0;
sacar := input("Quanto deseja sacar?")
qtde50, qtde20, qtde10, qtde5 := 0
Enquanto sacar for diferente de 0 faça:
se sacar > 50:
qtde50 := sacar / 50
sacar := sacar mod 50
se sacar > 20:
qtde20 := sacar / 20
sacar := sacar mod 20
se sacar > 10:
qtde10 := sacar / 10
sacar := sacar mod 10
fim algoritmo