Advertisement
Mateus_Costa

Prova de C 01

Apr 22nd, 2019
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int cedulasCinco = 20;
  5. int cedulasDez = 20;
  6. int cedulasVinte = 15;
  7. int cedulasCinquenta = 10;
  8. int cedulasCem = 10;
  9.  
  10. int main()
  11. {
  12.     /* Encerra o sistema caso esteja sem notas */
  13.     if(cedulasCinco == 0 &&
  14.        cedulasDez == 0 &&
  15.        cedulasVinte == 0 &&
  16.        cedulasCinquenta == 0 &&
  17.        cedulasCem == 0) {
  18.         printf("O sistema esta sendo encerrado. (Incapaz de operar)\n");
  19.         return 0;
  20.     }
  21.  
  22.     int saque;
  23.  
  24.     printf("Informe o valor do saque: ");
  25.     setbuf(stdin, NULL);
  26.     scanf("%d", &saque);
  27.  
  28.     /* Verifica se o valor do saque é maior do que o valor presente no sistema */
  29.     if((cedulasCem * 100 + cedulasCinquenta * 50 + cedulasVinte * 20 +
  30.        cedulasDez * 10 + cedulasCinco * 5) < saque) {
  31.         printf("Notas insuficientes.\n");
  32.         main(); /* chama o programa novamente, sem encerrá-lo! */
  33.     }
  34.  
  35.     int notasCem = 0;
  36.     int notasCinquenta = 0;
  37.     int notasVinte = 0;
  38.     int notasDez = 0;
  39.     int notasCinco = 0;
  40.  
  41.     /* Pega o maximo de notas de 100, se for possível. */
  42.     int i;
  43.     for(i = 0; i <= cedulasCem; i++){
  44.         if(i * 100 > saque){
  45.             break;
  46.         }
  47.         notasCem = i;
  48.     }
  49.  
  50.     saque = saque - notasCem * 100; /* desconta do saque o valor que foi pego */
  51.  
  52.     /* Pega o maximo de notas de 50, se for possível. */
  53.     for(i = 0; i <= cedulasCinquenta; i++){
  54.         if(i * 50 > saque){
  55.             break;
  56.         }
  57.         notasCinquenta = i;
  58.     }
  59.  
  60.     saque = saque - notasCinquenta * 50; /* desconta do saque o valor que foi pego */
  61.  
  62.     /* Pega o maximo de notas de 20, se for possível. */
  63.     for(i = 0; i <= cedulasVinte; i++){
  64.         if(i * 20 > saque){
  65.             break;
  66.         }
  67.         notasVinte = i;
  68.     }
  69.  
  70.     saque = saque - notasVinte * 20; /* desconta do saque o valor que foi pego */
  71.  
  72.     /* Pega o maximo de notas de 10, se for possível. */
  73.     for(i = 0; i <= cedulasDez; i++){
  74.         if(i * 10 > saque){
  75.             break;
  76.         }
  77.         notasDez = i;
  78.     }
  79.  
  80.     saque = saque - notasDez * 10; /* desconta do saque o valor que foi pego */
  81.  
  82.     /* Pega o maximo de notas de 5, se for possível. */
  83.     for(i = 0; i <= cedulasCinco; i++){
  84.         if(i * 5 > saque){
  85.             break;
  86.         }
  87.         notasCinco = i;
  88.     }
  89.  
  90.     saque = saque - notasCinco * 5; /* desconta do saque o valor que foi pego */
  91.  
  92.  
  93.     printf("Notas:\n");
  94.     if(notasCem > 0){
  95.         printf("%d x 100\n", notasCem);
  96.     }
  97.     if(notasCinquenta > 0){
  98.         printf("%d x 50\n", notasCinquenta);
  99.     }
  100.     if(notasVinte > 0){
  101.         printf("%d x 20\n", notasVinte);
  102.     }
  103.     if(notasDez > 0){
  104.         printf("%d x 10\n", notasDez);
  105.     }
  106.     if(notasCinco > 0){
  107.         printf("%d x 5\n", notasCinco);
  108.     }
  109.  
  110.     /* Calcula o total retirado do caixa */
  111.     int total = notasCem * 100 +
  112.         notasCinquenta * 50 +
  113.         notasVinte * 20 +
  114.         notasDez * 10 +
  115.         notasCinco * 5;
  116.  
  117.     printf("Total: %d", total);
  118.  
  119.     /* Se o saque for maior que 0, significa que houve valores não suportados (ex: 244) */
  120.     if(saque > 0){
  121.         printf(" (Notas NAO suportadas)");
  122.     }
  123.  
  124.     printf("\nDeseja confirmar o saque?\n");
  125.     printf("<Y> Sim\n");
  126.     printf("<N> Nao\n");
  127.  
  128.     char confirmacao;
  129.     setbuf(stdin, NULL);
  130.     scanf("%c", &confirmacao);
  131.  
  132.     /* Confirmando o saque, o valor é retirado e as cedulas são descontadas do caixa */
  133.     if(confirmacao == 'Y' || confirmacao == 'y'){
  134.         cedulasCinco -= notasCinco;
  135.         cedulasDez -= notasDez;
  136.         cedulasVinte -= notasVinte;
  137.         cedulasCinquenta -= notasCinquenta;
  138.         cedulasCem -= notasCem;
  139.  
  140.         printf("Saque realizado com sucesso! Total: %d\n\n", total);
  141.     }
  142.     else if(confirmacao == 'N' || confirmacao == 'n'){
  143.         printf("Saque NAO realizado (cancelado pelo usuario)\n\n");
  144.     }
  145.     else {
  146.         printf("Saque NAO realizado (cancelado pelo sistema)\n\n");
  147.     }
  148.  
  149.     main(); /* chama o programa novamente, sem encerrá-lo! */
  150.  
  151.     return 0;
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement