Advertisement
Guest User

Trabalho de Lógica de Programação

a guest
Nov 23rd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 19.32 KB | None | 0 0
  1. ///////////////////////
  2. // PRE PROCESSAMENTO //
  3. ///////////////////////
  4.  
  5. #include<stdio.h>   // Biblioteca padrao Input / Output
  6. #include<stdlib.h>  // Biblioteca padrao
  7. #include<conio.h>   // Console Input / Output
  8.  
  9. ///////////////////////
  10. // VARIAVEIS GLOBAIS //
  11. ///////////////////////
  12.  
  13. int   i1, i2;
  14. int   fil = 20, col = 35, cadTeatro = 700, cadTotalEspet = 700, cad = 700, opcaoEspetaculo = 3;
  15. float cadPreco, resPreco, resPrecoCem, cadReservada;
  16. char  mapa[20][35];
  17.  
  18. //////////////////////////////////////
  19. // VARIAVEIS GLOBAIS DE ESTATISTICA //
  20. //////////////////////////////////////
  21.  
  22. int   cadEspet = 0, resEspet = 0, libEspet = 0;
  23. int   cadTotal = 0, resTotal = 0, libTotal = 0, espetaculos = 0;
  24. float comEspet = 0, comCadEspet = 0, comResEspet = 0, comLibEspet = 0, comTotEspet = 0;
  25. float comTotal = 0, comCadTotal = 0, comResTotal = 0, comLibTotal = 0;
  26.  
  27. // PORCENTAGEM //
  28.  
  29. int cadEspet100, resEspet100, libEspet100;
  30. int cadTotal100, resTotal100, libTotal100;
  31. int comEspet100, comCadEspet100, comResEspet100, comLibEspet100;
  32. int comTotal100, comCadTotal100, comResTotal100, comLibTotal100;
  33.  
  34. ////////////////////////////
  35. // DECLARACOES DE FUNCOES //
  36. ////////////////////////////
  37.  
  38. void mostrarCabecalho();
  39. void mostrarMapa();
  40. void mostrarOpcoes();
  41. void mostrarGrafico(int max);
  42. void finalizarOpcao();
  43. void checarEspetaculo();
  44. void erro();
  45.  
  46. ///////////////////////////
  47. // DEFINICOES DE FUNCOES //
  48. ///////////////////////////
  49.  
  50.  
  51. //    Funcao usada para limpar a tela e mostrar cabecalho
  52. void mostrarCabecalho()
  53. {
  54.     system("cls");              // Funcao da biblioteca <stdlib.h>, limpa o console do Windows
  55.     printf("////////////\n");
  56.     printf("// Teatro //\n");
  57.     printf("////////////\n");
  58.     printf("\n");
  59.     printf("Espetaculos: %d", espetaculos);
  60.     if (opcaoEspetaculo == 0)
  61.         printf("\nVendas: encerradas.\n");
  62.     else if (opcaoEspetaculo == 1)
  63.         printf("\nVendas: abertas.\n");
  64.     else
  65.         printf("\nVendas: nao reconhecido.\n");
  66. }
  67.  
  68.  
  69. //    Funcao usada para mostrar mapa do atual espetaculo
  70. void mostrarMapa()
  71. {
  72.     printf("\n");
  73.     for (i1 = 0; i1 < fil; i1++) {
  74.         printf("%d \t \b\b\b\b\b", i1+1);
  75.  
  76.         for (i2 = 0; i2 < col; i2++)
  77.             printf("%c ", mapa[i1][i2]);
  78.        
  79.         printf("\n");
  80.     }
  81.     printf("\n");
  82.     printf("L = Livre\n");
  83.     printf("V = Vendido\n");
  84.     printf("R = Reservado\n");
  85.     printf("\n");
  86. }
  87.  
  88.  
  89. //    Funcao usada pra mostrar opcoes e executa-las
  90. void mostrarOpcoes()
  91. {
  92.     int opcao;
  93.     int f, c, o;
  94.  
  95.     printf("\n");
  96.     printf("[0] - Encerrar a aplicacao \n");
  97.     printf("[1] - Redefinir dados \n");
  98.     printf("[2] - Abrir um espetaculo \n");
  99.     printf("[3] - Realizar venda ou reserva de lugar \n");
  100.     printf("[4] - Realizar liberacao de lugar \n");
  101.     printf("[5] - Verificar medias parciais do teatro \n");
  102.     printf("[6] - Encerrar ou abrir vendas do espetaculo \n");
  103.     printf("[7] - Verificar percentuais das vendas deste espetaculo \n");
  104.     printf("[8] - Verificar percentuais do teatro desde sua abertura \n");
  105.  
  106.     scanf("%d", &opcao);
  107.  
  108.     switch (opcao) {
  109.         case 0:
  110.             printf("Aplicacao encerrada.");
  111.         break;
  112.  
  113.         case 1:
  114.             mostrarCabecalho();
  115.             mostrarMapa();
  116.  
  117.             printf("\n- Opcao 1 - Redefinir dados do sistema -\n");
  118.             printf("\n");
  119.  
  120.             printf("Fileiras:               %d\n", fil);
  121.             printf("Colunas:                %d\n", col);
  122.             printf("Cadeiras totais:        %d\n", cadTeatro);
  123.             printf("Cadeiras livres:        %d\n", cad);
  124.             printf("Cadeiras no espetaculo: %d\n", cadTotalEspet);
  125.             printf("\n");
  126.             printf("Preco da cadeira:       %.2f\n", cadPreco);
  127.             printf("Preco da reserva:       %.2f\n", resPreco);
  128.             printf("Preco da reserva (%%):   %.2f\n", resPrecoCem);
  129.             printf("\n");
  130.             printf("Cadeiras compradas no espetaculo:    %d\n", cadEspet);
  131.             printf("Cadeiras compradas no teatro:        %d\n", cadTotal);
  132.             printf("\n");
  133.             printf("Cadeiras reservadas no espetaculo:   %d\n", resEspet);
  134.             printf("Cadeiras reservadas no teatro:       %d\n", resTotal);
  135.             printf("\n");
  136.             printf("Cadeiras liberadas no espetaculo:    %d\n", libEspet);
  137.             printf("Cadeiras liberadas no teatro:        %d\n", libTotal);
  138.             printf("\n");
  139.             printf("Capital no espetaculo:               %.2f\n", comEspet);
  140.             printf("Capital no teatro:                   %.2f\n", comTotal);
  141.             printf("\n");
  142.             printf("Capital em compras no espetaculo:    %.2f\n", comCadEspet);
  143.             printf("Capital em compras no teatro:        %.2f\n", comCadTotal);
  144.             printf("\n");
  145.             printf("Capital em reservas no espetaculo:   %.2f\n", comResEspet);
  146.             printf("Capital em reservas no teatro:       %.2f\n", comResTotal);
  147.             printf("\n");
  148.             printf("Capital em devolucoes no espetaculo: %.2f\n", comLibEspet);
  149.             printf("Capital em devolucoes no teatro:     %.2f\n", comLibTotal);
  150.             printf("\n");
  151.  
  152.             printf("\nPressione 1 para continuar 2 para voltar:\n");
  153.             scanf("%d", &o);
  154.  
  155.             if (o == 1) {
  156.                 fil = 20; col = 35; cadTeatro = 700; cadTotalEspet = 700; cad = 700; opcaoEspetaculo = 0;
  157.                 cadPreco = 0; resPreco = 0; resPrecoCem = 0; cadReservada = 0;
  158.                 cadEspet = 0; resEspet = 0; libEspet = 0;
  159.                 cadTotal = 0; resTotal = 0; libTotal = 0; espetaculos = 0;
  160.                 comEspet = 0; comCadEspet = 0; comResEspet = 0; comLibEspet = 0, comTotEspet = 0;
  161.                 comTotal = 0; comCadTotal = 0; comResTotal = 0; comLibTotal = 0;
  162.                
  163.                 printf("\n");
  164.                 printf("Dados redefinidos com sucesso.");
  165.             }
  166.  
  167.  
  168.             finalizarOpcao();
  169.         break;
  170.  
  171.         c2:
  172.         case 2:
  173.             mostrarCabecalho();
  174.             printf("\n- Opcao 2 - Abrir um espetaculo -\n");
  175.             printf("\n");
  176.            
  177.             if (espetaculos != 0) {
  178.                 printf("Ja existe um espetaculo aberto, deseja continuar?\n");
  179.                 printf("1 para continuar, 2 para voltar:\n");
  180.                 scanf("%d", &o);
  181.                
  182.                 if (o == 2)
  183.                     finalizarOpcao();
  184.                
  185.                 printf("\n");
  186.             }
  187.            
  188.             cadEspet = 0; resEspet = 0; libEspet = 0;
  189.             comEspet = 0; comCadEspet = 0; comResEspet = 0; comLibEspet = 0, comTotEspet = 0;
  190.             printf("Digite a quantidade de fileiras e colunas: \n");
  191.             scanf("%d %d", &fil, &col);
  192.            
  193.            
  194.  
  195.             if (fil > 20 || col > 35) {
  196.                 erro();
  197.                 goto c2;
  198.             }
  199.  
  200.             cadTotalEspet = fil * col;
  201.             cad = cadTotalEspet;
  202.  
  203.             for (i1 = 0; i1 < fil; i1++) {
  204.                 for (i2 = 0; i2 < col; i2++)
  205.                     mapa[i1][i2] = 'L';
  206.             }
  207.  
  208.             mostrarMapa();
  209.  
  210.             printf("Digite o preco da cadeira: \n");
  211.             scanf("%f", &cadPreco);
  212.  
  213.             printf("Digite o preco da reserva (%%): \n");
  214.             scanf("%f", &resPrecoCem);
  215.  
  216.             resPreco = (resPrecoCem / 100) * cadPreco;
  217.             cadReservada = cadPreco - resPreco;
  218.  
  219.             printf("Digite 1 para manter as vendas abertas, 2 para fecha-las: \n");
  220.             scanf("%d", &o);
  221.  
  222.             if (o == 1)
  223.                 opcaoEspetaculo = 1;
  224.             else if (o == 2)
  225.                 opcaoEspetaculo = 0;
  226.             else
  227.                 erro();
  228.                
  229.             mostrarCabecalho();
  230.             mostrarMapa();
  231.            
  232.             printf("\n\n- Informacoes do Espetaculo -\n\n");
  233.             printf("Cadeiras:          %d\n", cad);
  234.             printf("Fileiras:          %d\n", fil);
  235.             printf("Colunas:           %d\n", col);
  236.  
  237.             printf("\n\n- Precos -\n\n");
  238.             printf("Cadeira:           %.2f reais\n", cadPreco);
  239.             printf("Reserva:           %.2f reais\n", resPreco);
  240.             printf("Cadeira Reservada: %.2f reais\n", cadReservada);
  241.             printf("Reserva (%%):       %.0f%%\n", resPrecoCem);
  242.  
  243.             espetaculos++;
  244.  
  245.             finalizarOpcao();
  246.         break;
  247.  
  248.         c3:
  249.         case 3:
  250.             mostrarCabecalho();
  251.             checarEspetaculo();
  252.            
  253.             if (opcaoEspetaculo == 0) {
  254.                 printf("\nAs vendas foram encerradas...\n");
  255.                 finalizarOpcao();
  256.             }
  257.            
  258.             mostrarMapa();
  259.  
  260.             printf("\n- Opcao 3 - Vender ou Reservar lugar -\n");
  261.             printf("\n");
  262.  
  263.             printf("Selecione o lugar (fil,col): \n");
  264.             scanf("%d %d",&f,&c);
  265.  
  266.             if (f > fil || c > col || mapa[f-1][c-1] == 'V') {
  267.                 erro();
  268.                 goto c3;
  269.             }
  270.             else if (mapa[f-1][c-1] == 'R') {
  271.                 printf("\nLugar ja reservado, 1 para comprar 2 para tentar novamente:\n");
  272.                 scanf("%d",&o);
  273.  
  274.                 if (o == 1) {
  275.                     mapa[f-1][c-1] = 'V';
  276.                    
  277.                     mostrarCabecalho();
  278.                     mostrarMapa();
  279.                     printf("Lugar comprado com sucesso!\n");
  280.                     printf("Valor da compra: %.2f\n", cadReservada);
  281.  
  282.                     //cad--;
  283.  
  284.                     cadEspet++;
  285.                     cadTotal++;
  286.  
  287.                     comEspet += cadReservada;
  288.                     comTotEspet += cadReservada;
  289.                     comTotal += cadReservada;
  290.  
  291.                     comCadEspet += cadReservada;
  292.                     comCadTotal += cadReservada;
  293.  
  294.                 } else if (o == 2) {
  295.                     goto c3;
  296.  
  297.                 } else {
  298.                     erro();
  299.                     goto c3;
  300.                 }
  301.             }
  302.             else if (mapa[f-1][c-1] == 'L') {
  303.                 printf("\nLugar livre, 1 para comprar 2 para reservar:\n");
  304.                 scanf("%d",&o);
  305.  
  306.                 if (o == 1) {
  307.                     mapa[f-1][c-1] = 'V';
  308.                    
  309.                     mostrarCabecalho();
  310.                     mostrarMapa();
  311.                     printf("Lugar comprado com sucesso!\n");
  312.                     printf("Valor da compra: %.2f\n", cadPreco);
  313.  
  314.                     cad--;
  315.  
  316.                     cadEspet++;
  317.                     cadTotal++;
  318.  
  319.                     comEspet += cadPreco;
  320.                     comTotEspet += cadPreco;
  321.                     comTotal += cadPreco;
  322.  
  323.                     comCadEspet += cadPreco;
  324.                     comCadTotal += cadPreco;
  325.  
  326.                 } else if (o == 2) {
  327.                     mapa[f-1][c-1] = 'R';
  328.                    
  329.                     mostrarCabecalho();
  330.                     mostrarMapa();
  331.                     printf("Lugar reservado com sucesso!\n");
  332.                     printf("Valor da reserva: %.2f\n", resPreco);
  333.  
  334.                     cad--;
  335.  
  336.                     resEspet++;
  337.                     resTotal++;
  338.  
  339.                     comEspet += resPreco;
  340.                     comTotEspet += resPreco;
  341.                     comTotal += resPreco;
  342.  
  343.                     comResEspet += resPreco;
  344.                     comResTotal += resPreco;
  345.  
  346.                 } else {
  347.                     erro();
  348.                     goto c3;
  349.                 }
  350.             }
  351.  
  352.             finalizarOpcao();
  353.         break;
  354.  
  355.         case 4:
  356.             mostrarCabecalho();
  357.             checarEspetaculo();
  358.            
  359.             if (opcaoEspetaculo == 0) {
  360.                 printf("\nAs vendas foram encerradas...\n");
  361.                 finalizarOpcao();
  362.             }
  363.  
  364.             mostrarMapa();
  365.  
  366.             printf("\n- Opcao 4 - Realizar liberacao de lugar -\n");
  367.             printf("\n");
  368.  
  369.             printf("Selecione o lugar (fil,col): \n");
  370.             scanf("%d %d",&f,&c);
  371.  
  372.             if (f > fil || c > col || mapa[f-1][c-1] == 'L') {
  373.                 erro();
  374.             }
  375.             else if (mapa[f-1][c-1] == 'V') {
  376.                 mapa[f-1][c-1] = 'L';
  377.                    
  378.                 mostrarCabecalho();
  379.                 mostrarMapa();
  380.                 printf("\nLiberacao de lugar vendido com sucesso!\n");
  381.                 printf("\nValor devolvido: %.2f\n", cadPreco);
  382.  
  383.                 cad++;
  384.  
  385.                 libEspet++;
  386.                 libTotal++;
  387.  
  388.                 comTotEspet -= cadPreco;
  389.                 comTotal -= cadPreco;
  390.  
  391.                 comLibEspet += cadPreco;
  392.                 comLibTotal += cadPreco;
  393.  
  394.             }
  395.             else if (mapa[f-1][c-1] == 'R') {
  396.                 mapa[f-1][c-1] = 'L';
  397.                    
  398.                 mostrarCabecalho();
  399.                 mostrarMapa();
  400.                 printf("\nLiberacao de lugar reservado com sucesso!\n");
  401.                 printf("\nValor devolvido: %.2f\n", resPreco);
  402.  
  403.                 cad++;
  404.  
  405.                 libEspet++;
  406.                 libTotal++;
  407.  
  408.                 comTotEspet -= resPreco;
  409.                 comTotal -= cadPreco;
  410.  
  411.                 comLibEspet += resPreco;
  412.                 comLibTotal += resPreco;
  413.  
  414.             }
  415.  
  416.             finalizarOpcao();
  417.         break;
  418.  
  419.         case 5:
  420.             mostrarCabecalho();
  421.             checarEspetaculo();
  422.            
  423.             mostrarMapa();
  424.  
  425.             printf("\n- Opcao 5 - Verificar medias parciais do teatro -\n");
  426.             printf("\n");
  427.  
  428.             printf("Atualmente, as medias do teatro sao:\n\n");
  429.            
  430.             printf("Cadeiras totais no espetaculo:       %d\n", cadTotalEspet);
  431.             printf("Cadeiras livres no espetaculo:       %d\n", cad);
  432.             printf("Cadeiras compradas no espetaculo:    %d\n", cadEspet);
  433.             printf("Cadeiras reservadas no espetaculo:   %d\n", resEspet);
  434.             printf("Cadeiras liberadas no espetaculo:    %d\n", libEspet);
  435.             printf("Capital total no espetaculo:         %.2f\n", comEspet);
  436.             printf("Capital atual no espetaculo:         %.2f\n", comTotEspet);
  437.             printf("Capital em compras no espetaculo:    %.2f\n", comCadEspet);
  438.             printf("Capital em reservas no espetaculo:   %.2f\n", comResEspet);
  439.             printf("Capital em devolucoes no espetaculo: %.2f\n", comLibEspet);
  440.             printf("\n");
  441.        
  442.             finalizarOpcao();
  443.         break;
  444.  
  445.         case 6:
  446.             mostrarCabecalho();
  447.             checarEspetaculo();
  448.  
  449.             mostrarMapa();
  450.  
  451.             printf("\n- Opcao 6 - Encerrar vendas do espetaculo -\n");
  452.             printf("\n");
  453.            
  454.             if (opcaoEspetaculo == 0)
  455.                 printf("\nVendas: encerradas.\n");
  456.             else if (opcaoEspetaculo == 1)
  457.                 printf("\nVendas: abertas.\n");
  458.             else
  459.                 printf("\nVendas: ERRO.\n");
  460.                
  461.             printf("\n");
  462.  
  463.             printf("Pressione 1 para encerrar, 2 para abrir as vendas: \n");
  464.             scanf("%d", &o);
  465.  
  466.             if (o == 1) {
  467.                 opcaoEspetaculo = 0;
  468.             }
  469.             else if (o == 2) {
  470.                 opcaoEspetaculo = 1;
  471.             }
  472.  
  473.             finalizarOpcao();
  474.         break;
  475.      
  476.         case 7:
  477.             mostrarCabecalho();
  478.             checarEspetaculo();
  479.            
  480.             mostrarMapa();
  481.  
  482.             comEspet100    = 100;
  483.             comCadEspet100 = (comCadEspet / comEspet) * 100;
  484.             comResEspet100 = (comResEspet / comEspet) * 100;
  485.             comLibEspet100 = (comLibEspet / comEspet) * 100;
  486.  
  487.             printf("1- Capital total no espetaculo:         %.2f\n", comEspet);
  488.             printf("2- Capital em compras no espetaculo:    %.2f\n", comCadEspet);
  489.             printf("3- Capital em reservas no espetaculo:   %.2f\n", comResEspet);
  490.             printf("4- Capital em devolucoes no espetaculo: %.2f\n", comLibEspet);
  491.  
  492.             printf("\n");
  493.             printf("\n");
  494.  
  495.             printf("Graficos: (margem de erro de 2%%) \n");
  496.             printf("\n");
  497.  
  498.             i1 = 1;
  499.             mostrarGrafico(comEspet100);
  500.             i1++;
  501.             mostrarGrafico(comCadEspet100);
  502.             i1++;
  503.             mostrarGrafico(comResEspet100);
  504.             i1++;
  505.             mostrarGrafico(comLibEspet100);
  506.             i1 = 0;
  507.  
  508.             finalizarOpcao();
  509.         break;
  510.  
  511.         case 8:
  512.             mostrarCabecalho();
  513.             checarEspetaculo();
  514.            
  515.             mostrarMapa();
  516.  
  517.             cadTotal100 = 100;
  518.             resTotal100 = (resTotal / cadTotal) * 100;
  519.             libTotal100 = (libTotal / cadTotal) * 100;
  520.  
  521.             comTotal100    = 100;
  522.             comCadTotal100 = (comCadTotal / comTotal) * 100;
  523.             comResTotal100 = (comResTotal / comTotal) * 100;
  524.             comLibTotal100 = (comLibTotal / comTotal) * 100;
  525.            
  526.             printf("Cadeiras: \n");
  527.             printf("1- Cadeiras compradas no teatro:        %d\n", cadTotal);
  528.             printf("2- Cadeiras reservadas no teatro:       %d\n", resTotal);
  529.             printf("3- Cadeiras liberadas no teatro:        %d\n", libTotal);
  530.             printf("\n");
  531.  
  532.             printf("Capital: \n");
  533.             printf("1- Capital no teatro:                   %.2f\n", comTotal);
  534.             printf("2- Capital em compras no teatro:        %.2f\n", comCadTotal);
  535.             printf("3- Capital em reservas no teatro:       %.2f\n", comResTotal);
  536.             printf("4- Capital em devolucoes no teatro:     %.2f\n", comLibTotal);
  537.             printf("\n");
  538.  
  539.             printf("Graficos: (margem de erro de 2%%) \n");
  540.             printf("\n");
  541.  
  542.             printf("Cadeiras: \n");
  543.             i1 = 1;
  544.             mostrarGrafico(cadTotal100);
  545.             i1++;
  546.             mostrarGrafico(resTotal100);
  547.             i1++;
  548.             mostrarGrafico(libTotal100);
  549.             i1 = 0;
  550.             printf("\n");
  551.  
  552.             printf("Capital: \n");
  553.             i1 = 1;
  554.             mostrarGrafico(comTotal100);
  555.             i1++;
  556.             mostrarGrafico(comCadTotal100);
  557.             i1++;
  558.             mostrarGrafico(comResTotal100);
  559.             i1++;
  560.             mostrarGrafico(comLibTotal100);
  561.             i1 = 0;
  562.  
  563.             finalizarOpcao();
  564.         break;
  565.        
  566.         default:
  567.             printf("\nOpcao invalida. Tente novamente\n");
  568.             printf("\nDigite qualquer tecla para continuar...\n");
  569.             getch();
  570.             system("cls");
  571.             mostrarCabecalho();
  572.             mostrarOpcoes();
  573.     }
  574. }
  575.  
  576.  
  577. //    Funcao usada para finalizar tarefas
  578. void finalizarOpcao()
  579. {
  580.     printf("\nDigite qualquer tecla para continuar...\n");
  581.     getch();
  582.     mostrarCabecalho();
  583.     mostrarOpcoes();
  584. }
  585.  
  586.  
  587. //    Funcao usada para checar existencia
  588. //    de espetaculos ou existencia de vendas abertas
  589. void checarEspetaculo()
  590. {  
  591.     if (espetaculos == 0) {
  592.         printf("\nNenhum espetaculo aberto...\n");
  593.         finalizarOpcao();
  594.     }  
  595. }
  596.  
  597.  
  598. void mostrarGrafico(int max)
  599. {
  600.     char grafico[max];
  601.  
  602.     printf("%d| ", i1);
  603.     for (i1 = 0; i1 < max; i1++) {
  604.         grafico[i1] = '#';
  605.         printf("%c", grafico[i1]);
  606.     }
  607.     printf(" - %d%%", max);
  608.     printf("\n");
  609. }
  610.  
  611.  
  612. //    Funcao para quando ha erros de entrada pelo usuario
  613. void erro() {
  614.     printf("\nOpcao invalida, tente novamente.\n");
  615.     printf("\nDigite qualquer tecla para continuar...\n");
  616.     getch();
  617. }
  618.  
  619. //    Funcao principal
  620. int main()
  621. {
  622.     for (i1 = 0; i1 < fil; i1++) {
  623.         for (i2 = 0; i2 < col; i2++)
  624.             mapa[i1][i2] = 'L';
  625.     }
  626.  
  627.     mostrarCabecalho();
  628.     mostrarOpcoes();
  629.  
  630.     return 0;
  631. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement