Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int cedulasCinco = 20;
- int cedulasDez = 20;
- int cedulasVinte = 15;
- int cedulasCinquenta = 10;
- int cedulasCem = 10;
- int main()
- {
- /* Encerra o sistema caso esteja sem notas */
- if(cedulasCinco == 0 &&
- cedulasDez == 0 &&
- cedulasVinte == 0 &&
- cedulasCinquenta == 0 &&
- cedulasCem == 0) {
- printf("O sistema esta sendo encerrado. (Incapaz de operar)\n");
- return 0;
- }
- int saque;
- printf("Informe o valor do saque: ");
- setbuf(stdin, NULL);
- scanf("%d", &saque);
- /* Verifica se o valor do saque é maior do que o valor presente no sistema */
- if((cedulasCem * 100 + cedulasCinquenta * 50 + cedulasVinte * 20 +
- cedulasDez * 10 + cedulasCinco * 5) < saque) {
- printf("Notas insuficientes.\n");
- main(); /* chama o programa novamente, sem encerrá-lo! */
- }
- int notasCem = 0;
- int notasCinquenta = 0;
- int notasVinte = 0;
- int notasDez = 0;
- int notasCinco = 0;
- /* Pega o maximo de notas de 100, se for possível. */
- int i;
- for(i = 0; i <= cedulasCem; i++){
- if(i * 100 > saque){
- break;
- }
- notasCem = i;
- }
- saque = saque - notasCem * 100; /* desconta do saque o valor que foi pego */
- /* Pega o maximo de notas de 50, se for possível. */
- for(i = 0; i <= cedulasCinquenta; i++){
- if(i * 50 > saque){
- break;
- }
- notasCinquenta = i;
- }
- saque = saque - notasCinquenta * 50; /* desconta do saque o valor que foi pego */
- /* Pega o maximo de notas de 20, se for possível. */
- for(i = 0; i <= cedulasVinte; i++){
- if(i * 20 > saque){
- break;
- }
- notasVinte = i;
- }
- saque = saque - notasVinte * 20; /* desconta do saque o valor que foi pego */
- /* Pega o maximo de notas de 10, se for possível. */
- for(i = 0; i <= cedulasDez; i++){
- if(i * 10 > saque){
- break;
- }
- notasDez = i;
- }
- saque = saque - notasDez * 10; /* desconta do saque o valor que foi pego */
- /* Pega o maximo de notas de 5, se for possível. */
- for(i = 0; i <= cedulasCinco; i++){
- if(i * 5 > saque){
- break;
- }
- notasCinco = i;
- }
- saque = saque - notasCinco * 5; /* desconta do saque o valor que foi pego */
- printf("Notas:\n");
- if(notasCem > 0){
- printf("%d x 100\n", notasCem);
- }
- if(notasCinquenta > 0){
- printf("%d x 50\n", notasCinquenta);
- }
- if(notasVinte > 0){
- printf("%d x 20\n", notasVinte);
- }
- if(notasDez > 0){
- printf("%d x 10\n", notasDez);
- }
- if(notasCinco > 0){
- printf("%d x 5\n", notasCinco);
- }
- /* Calcula o total retirado do caixa */
- int total = notasCem * 100 +
- notasCinquenta * 50 +
- notasVinte * 20 +
- notasDez * 10 +
- notasCinco * 5;
- printf("Total: %d", total);
- /* Se o saque for maior que 0, significa que houve valores não suportados (ex: 244) */
- if(saque > 0){
- printf(" (Notas NAO suportadas)");
- }
- printf("\nDeseja confirmar o saque?\n");
- printf("<Y> Sim\n");
- printf("<N> Nao\n");
- char confirmacao;
- setbuf(stdin, NULL);
- scanf("%c", &confirmacao);
- /* Confirmando o saque, o valor é retirado e as cedulas são descontadas do caixa */
- if(confirmacao == 'Y' || confirmacao == 'y'){
- cedulasCinco -= notasCinco;
- cedulasDez -= notasDez;
- cedulasVinte -= notasVinte;
- cedulasCinquenta -= notasCinquenta;
- cedulasCem -= notasCem;
- printf("Saque realizado com sucesso! Total: %d\n\n", total);
- }
- else if(confirmacao == 'N' || confirmacao == 'n'){
- printf("Saque NAO realizado (cancelado pelo usuario)\n\n");
- }
- else {
- printf("Saque NAO realizado (cancelado pelo sistema)\n\n");
- }
- main(); /* chama o programa novamente, sem encerrá-lo! */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement