Na prova de ontem tivemos que resolver esta questão. Nem todos os colegas conseguiram encontrar a solução da questão. Então, para registrar uma solução, eis como resolvi a questão abaixo:
Um programa para gerenciar os saques de um caixa eletrônico deve possuir algum mecanismo para decidir o número de notas de cada valor que deve ser disponibilizado para o cliente que realizou o saque. Um possível critério seria o da "distribuição ótima" no sentido de que as notas de menor valor
disponíveis fossem distribuídas em número mínimo possível.
Por exemplo, se a máquina só dispõe de notas de R$ 50, de R$ 10, de R$ 5 e de R$ 1, para uma quantia solicitada de R$ 87, o programa deveria indicar uma nota de R$ 50, três notas de R$ 10, uma nota de R$ 5 e duas notas de R$ 1. Escreva um programa que receba o valor da quantia solicitada e retorne a distribuição das notas de acordo com o critério da distribuição ótima.
Eis o código:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
int valor, qtd50,qtd10,qtd5,qtd1=0,resto50,resto10=0,resto5=0;
while (valor > 0 )
{
printf ("|-------------------------------------------------|\n");
printf ("| CAIXA ELETRONICO | ADAO BRAGA | 0 = SAIR |\n");
printf ("|-------------------------------------------------|\n");
printf ("\n\n");
printf("Valor do saque: ");
scanf("%d",&valor);
//O Processamento.
// O resto da divisão é separado na variavel resto50;
// O resto50 é dividido por 10 e o resultado guardado em resto10
// Faz o mesmo para 5, e 1
qtd50 = (valor / 50); // O valor é dividido por 50.
resto50 = (valor-(qtd50*50));
qtd10 = (resto50 / 10);
resto10 = (valor-(qtd10*10)-(qtd50*50));
qtd5 = (resto10 / 5);
resto5 = (valor-(qtd10*10)-(qtd50*50)-(qtd5*5));
qtd1 = (resto5 /1);
// Apresentação na tela
// %5d serve para justificar os números na tela a direita
printf("\n\n");
printf(" %5d ....: de 50,00 = %d \n",qtd50,(qtd50*50));// quantidade notas de 50
printf(" %5d ....: de 10,00 = %d \n",qtd10,(qtd10*10));// quantidade notas de 10
printf(" %5d ....: de 5,00 = %d \n",qtd5,(qtd5*5));// quantidade notas de 5
printf(" %5d ....: de 1,00 = %d \n",qtd1,(qtd1*1));// quantidade notas de 1
printf("\n\n");
printf("TECLE ALGO PARA CONTINUAR\n");
getch();
system("cls");
}
}
Nenhum comentário:
Postar um comentário