Informática, perguntado por danniel86oy2ptd, 11 meses atrás

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.

Soluções para a tarefa

Respondido por mayaravieiraj
6

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

Perguntas interessantes