Advertisement
mariosimao

prova1.pas

Oct 26th, 2016
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 14.19 KB | None | 0 0
  1. {PROVA 1
  2.  
  3. Objetivo: gravar o número de vacinas aplicadas e mostrar estatísticas
  4.  
  5. Responsável: Mario Simão
  6.  
  7.        Data: 26.10.2016
  8. Atualização: 26.10.2016
  9.  
  10. }
  11.  
  12. {=================================================================================}
  13.  
  14. program prova1;
  15.  
  16. uses crt;
  17.  
  18. const
  19.     nVacinas = 6; {número de tipos de vacina}
  20.  
  21. type
  22.     tipoMatrizPrincipal = array [1..24,1..nVacinas] of integer;
  23.     tipoVetorNomes = array [1..nVacinas] of string;
  24.     tipoVetorMeses = array [1..24] of string;
  25.     tipoVetorTotal = array [1..nVacinas] of integer;
  26.  
  27. var
  28.    principal: tipoMatrizPrincipal;
  29.    vetorNomes: tipoVetorNomes;
  30.    vetorMeses: tipoVetorMeses;
  31.    vetorTotal: tipoVetorTotal;
  32.    vetorNomesTotal: tipoVetorNomes;
  33.  
  34. {=================================================================================}
  35.  
  36. procedure nomesMes(var meses: tipoVetorMeses); {define os nomes dos meses}
  37.  
  38. begin
  39.  
  40.     meses[1]:= '| Sem Campanha | Janeiro  ';
  41.     meses[2]:= '| Sem Campanha | Fevereiro';
  42.     meses[3]:= '| Sem Campanha | Março    ';
  43.     meses[4]:= '| Sem Campanha | Abril    ';
  44.     meses[5]:= '| Sem Campanha | Maio     ';
  45.     meses[6]:= '| Sem Campanha | Junho    ';
  46.     meses[7]:= '| Sem Campanha | Julho    ';
  47.     meses[8]:= '| Sem Campanha | Agosto   ';
  48.    meses[9]:= '| Sem Campanha | Setembro ';
  49.     meses[10]:= '| Sem Campanha | Outubro  ';
  50.     meses[11]:= '| Sem Campanha | Novembro ';
  51.     meses[12]:= '| Sem Campanha | Dezembro ';
  52.  
  53.     meses[13]:= '| Com Campanha | Janeiro  ';
  54.    meses[14]:= '| Com Campanha | Fevereiro';
  55.    meses[15]:= '| Com Campanha | Março    ';
  56.    meses[16]:= '| Com Campanha | Abril    ';
  57.    meses[17]:= '| Com Campanha | Maio     ';
  58.    meses[18]:= '| Com Campanha | Junho    ';
  59.    meses[19]:= '| Com Campanha | Julho    ';
  60.    meses[20]:= '| Com Campanha | Agosto   ';
  61.    meses[21]:= '| Com Campanha | Setembro ';
  62.    meses[22]:= '| Com Campanha | Outubro  ';
  63.    meses[23]:= '| Com Campanha | Novembro ';
  64.    meses[24]:= '| Com Campanha | Dezembro ';
  65.  
  66.  
  67.  
  68. end;
  69.  
  70. {=================================================================================}
  71.  
  72. procedure nomesPadrao(var nomes,nomesTotal: tipoVetorNomes); {define os nomes das vacinas como padrão da prova}
  73.  
  74. begin
  75.  
  76.     nomes[1]:= 'BCG';
  77.     nomesTotal[1]:= 'BCG';
  78.     nomes[2]:= 'Hepatite B';
  79.     nomesTotal[2]:= 'Hepatite B';
  80.     nomes[3]:= 'Antipólio';
  81.     nomesTotal[3]:= 'Antipólio';
  82.     nomes[4]:= 'Tetravalente';
  83.     nomesTotal[4]:= 'Tetravalente';
  84.     nomes[5]:= 'Triplica Viral';
  85.     nomesTotal[5]:= 'Triplica Viral';
  86.     nomes[6]:= 'Rotavirus';
  87.     nomesTotal[6]:= 'Rotavirus';
  88.  
  89. end;
  90.  
  91. {=================================================================================}
  92.  
  93. procedure receberNomes(var nomes,nomesTotal: tipoVetorNomes); {recebe o nome de cada vacina}
  94.  
  95. var
  96.     i: integer;
  97.     nome: string;
  98.  
  99. begin
  100.  
  101.     writeln;
  102.     writeln('Digite os nomes das vacinas');
  103.     writeln;
  104.     for i:= 1 to nVacinas do
  105.     begin
  106.         write('Vacina ',i,': ');
  107.         readln(nome);
  108.         nomes[i]:= nome;
  109.         nomesTotal[i]:= nome;
  110.     end;
  111.  
  112. end;
  113.  
  114. {=================================================================================}
  115.  
  116. procedure legenda (nomes: tipoVetorNomes); {legenda dos números referentes a cada vacina}
  117.  
  118. var
  119.     i: integer;
  120.  
  121. begin
  122.  
  123.     writeln('LEGENDA:');
  124.     writeln;
  125.  
  126.     for i:=1 to 6 do
  127.     begin
  128.         writeln(i,' - ',nomes[i]);
  129.     end;   
  130.  
  131. end;
  132.  
  133. {=================================================================================}
  134.  
  135. procedure receberDados(var matriz: tipoMatrizPrincipal; nomes: tipoVetorNomes);
  136.  
  137. var
  138.     mes: integer;
  139.     campanha: char;
  140.     i,n: integer;
  141.  
  142. begin
  143.  
  144.     clrscr;
  145.     writeln;
  146.     writeln('INSERIR DADOS DIÁRIOS DE VACINAÇÃO');
  147.     writeln;
  148.  
  149.     {Pede o mês}
  150.     writeln;
  151.     writeln('Passo 1. Informe o mês (números de 1 a 12).');
  152.     writeln;
  153.     write('Mês: ');
  154.     readln(mes);
  155.     while mes > 12 do
  156.     begin
  157.         writeln;
  158.         write('Resposta inválida. Aperte qualquer tecla para poder digitar novamente...');
  159.         readkey;
  160.         clrscr;
  161.         writeln;
  162.         writeln('INSERIR DADOS DIÁRIOS DE VACINAÇÃO');
  163.         writeln;
  164.         writeln;
  165.         writeln('Passo 1. Informe o mês (números de 1 a 12).');
  166.         writeln;
  167.         write('Mês: ');
  168.         read(mes);
  169.     end;
  170.    
  171.     {Pede se está ou não em campanha de vacinação}
  172.     clrscr;
  173.     writeln;
  174.     writeln('INSERIR DADOS DIÁRIOS DE VACINAÇÃO');
  175.     writeln;
  176.     writeln;
  177.     writeln('Passo 2. Existe campanha de vacinação no momento?');
  178.     writeln;
  179.     write('Resposta ("s" ou "n"): ');
  180.     readln(campanha);
  181.     while (campanha <> 's') and (campanha <> 'n') do
  182.     begin
  183.         writeln;
  184.         write('Resposta inválida. Aperte qualquer tecla para poder digitar novamente...');
  185.         readkey;
  186.         clrscr;
  187.         writeln;
  188.         writeln('INSERIR DADOS DIÁRIOS DE VACINAÇÃO');
  189.         writeln;
  190.         writeln;
  191.         writeln('Passo 2. Existe campanha de vacinação no momento?');
  192.         writeln;
  193.         write('Resposta ("s ou "n"): ');
  194.         readln(campanha);
  195.     end;
  196.  
  197.     if campanha = 's' then
  198.     begin
  199.         mes:= mes + 12;
  200.     end;
  201.  
  202.     clrscr;
  203.     writeln;
  204.     writeln('INSERIR DADOS DIÁRIOS DE VACINAÇÃO');
  205.     writeln;
  206.     writeln;
  207.     writeln('Passo 3. Informe a quantidade de vacinas aplicadas.');
  208.     writeln;
  209.     for i:= 1 to nVacinas do
  210.     begin
  211.         write(nomes[i],': ');
  212.         readln(n);
  213.         matriz[mes,i]:= matriz[mes,i] + n;
  214.     end;
  215.    
  216.     writeln;
  217.  
  218. end;
  219.  
  220. {=================================================================================}
  221.  
  222. procedure imprimirTabela (matriz: tipoMatrizPrincipal; meses: tipoVetorMeses);
  223.  
  224. var
  225.     i,j,k: integer;
  226.  
  227. begin
  228.  
  229.     clrscr;
  230.     writeln;
  231.     writeln('TABELA DE DADOS');
  232.     writeln;
  233.  
  234. {   writeln('____________________________________________________');}
  235.    writeln('|--------------|-----------|---|---|---|---|---|---|');
  236.     write('|    Status    |    Mês    |');
  237.  
  238.     for k:=1 to nVacinas do
  239.     begin
  240.         write(' ',k,' |');
  241.     end;
  242.  
  243.     writeln;
  244.    writeln('|--------------|-----------|---|---|---|---|---|---|');
  245.    
  246.     for i:=1 to 12 do
  247.     begin
  248.    
  249.         write(meses[i],' |');
  250.    
  251.         for j:=1 to nVacinas do
  252.         begin
  253.             write(matriz[i,j]:3,'|');
  254.         end;
  255.    
  256.         writeln;
  257.  
  258.     end;
  259.  
  260.    writeln('|--------------|-----------|---|---|---|---|---|---|');
  261.  
  262.     for i:= 13 to 24 do
  263.     begin
  264.    
  265.         write(meses[i],' |');
  266.    
  267.         for j:= 1 to nVacinas do
  268.         begin
  269.             write(matriz[i,j]:3,'|');
  270.         end;
  271.  
  272.         writeln;
  273.  
  274.     end;
  275.  
  276.    writeln('|--------------|-----------|---|---|---|---|---|---|');
  277.  
  278.     writeln;
  279.  
  280. end;
  281.  
  282. {=================================================================================}
  283.  
  284. procedure totalMesCada (matriz: tipoMatrizPrincipal; nomes: tipoVetorNomes);
  285.  
  286. var
  287.     i,total,mes,mesCampanha: integer;
  288.  
  289. begin
  290.  
  291.     writeln('Insira o mês para ver as estatísticas (números de 1 a 12)');
  292.     write('Mês: ');
  293.     readln(mes);
  294.     writeln;
  295.  
  296.     mesCampanha:= mes + 12;
  297.  
  298.     for i:= 1 to nVacinas do
  299.     begin
  300.         total:= matriz[mes,i] + matriz[mesCampanha,i];
  301.         write(nomes[i],': ');
  302.         writeln(total);
  303.     end;
  304.  
  305.     writeln;
  306.  
  307. end;
  308.  
  309. {=================================================================================}
  310.  
  311. procedure totalCampanhaCada (matriz: tipoMatrizPrincipal; nomes: tipoVetorNomes);
  312.  
  313. var
  314.     i,total,mes: integer;
  315.  
  316. begin
  317.  
  318.     writeln('Total sem camapnha de vacinação:');
  319.     writeln;
  320.  
  321.     for i:=1 to nVacinas do {calcula e imprime o total de cada fora de campanhas de vacinação}
  322.     begin
  323.        
  324.         total:=0;
  325.        
  326.         for mes:= 1 to 12 do
  327.         begin
  328.             total:= total + matriz[mes,i];
  329.         end;
  330.  
  331.         writeln(nomes[i],': ', total);
  332.  
  333.     end;
  334.  
  335.     writeln;
  336.     writeln;
  337.     writeln('Total com campanha de vacinação:');
  338.     writeln;
  339.    
  340.     for i:= 1 to nVacinas do {calcula e imprime o total de cada dentro de campanhas de vacinação}
  341.     begin
  342.        
  343.         total:= 0;
  344.        
  345.         for mes:= 13 to 24 do
  346.         begin
  347.             total:= total + matriz[mes,i];
  348.         end;
  349.  
  350.         writeln(nomes[i],': ',total);
  351.  
  352.     end;
  353.  
  354.     writeln;
  355.  
  356. end;
  357.  
  358. {=================================================================================}
  359.  
  360. procedure totalCada (matriz: tipoMatrizPrincipal; var nomes: tipoVetorNomes; var vetorTotal: tipoVetorTotal);
  361.  
  362. var
  363.     i,mes,total,aux1: integer;
  364.     aux2: string;
  365.  
  366. begin
  367.  
  368.     for i:= 1 to nVacinas do
  369.     begin
  370.         total:=0;
  371.         for mes:=1 to 24 do
  372.         begin
  373.             total:= total + matriz[mes,i];
  374.         end;
  375.         vetorTotal[i]:= total;
  376.     end;
  377.  
  378.     for i:= 1 to (nVacinas-1) do
  379.     begin
  380.         if vetorTotal[i] > vetorTotal[i+1] then
  381.         begin
  382.             aux1:= vetorTotal[i];
  383.             vetorTotal[i]:= vetorTotal[i+1];
  384.             vetorTotal[i+1]:= aux1;
  385.  
  386.             aux2:= nomes[i];
  387.             nomes[i]:= nomes[i+1];
  388.             nomes[i+1]:= aux2;
  389.         end;
  390.     end;
  391.        
  392.     for i:= 1 to nVacinas do
  393.     begin
  394.         write(nomes[i],': ');
  395.         writeln(vetorTotal[i]);
  396.     end;
  397.  
  398. end;
  399.  
  400. {=================================================================================}
  401.  
  402. procedure menuRelatorios;
  403.  
  404. var
  405.  
  406.     opcao: integer;
  407.     continuar: boolean;
  408.     opcaoSair: char;
  409.  
  410. begin
  411.  
  412.        continuar:= true;
  413.  
  414.    while continuar = true do
  415.    begin
  416.  
  417.       clrscr;
  418.  
  419.       writeln('_________________________________________________________');
  420.       writeln('|                                                       |');
  421.       writeln('|                  R E L A T Ó R I O S                  |');
  422.       writeln('|                                                       |');
  423.       writeln('| 1. Total Mensal de Cada Vacina                        |');
  424.       writeln('| 2. Total dentro e fora de Campanhas de Cada Vacina    |');
  425.       writeln('| 3. Total de Cada Vacina                               |');
  426.         writeln('| 0. Voltar ao menu principal                           |');
  427.       writeln('|_______________________________________________________|');
  428.       writeln;
  429.  
  430.       write('Opção: ');
  431.       readln(opcao);
  432.       writeln;
  433.  
  434.       case opcao of
  435.  
  436.          1:
  437.          begin
  438.             clrscr;
  439.                 writeln;
  440.                 writeln('RELATÓRIO MENSAL');
  441.                 writeln;
  442.                 writeln;
  443.                 totalMesCada(principal,vetorNomes);
  444.             write('Aperte qualquer tecla para voltar ao Menu de Relatórios...');
  445.                 readkey;
  446.          end;
  447.  
  448.          2:
  449.          begin;
  450.                 clrscr;
  451.                 writeln;
  452.                 writeln('RELATÓRIO DAS CAMPANHAS DE VACINAÇÃO');
  453.                 writeln;
  454.                 writeln;
  455.             totalCampanhaCada(principal,vetorNomes);
  456.                 write('Aperte qualquer tecla para voltar ao Menu de Relatórios...');
  457.             readkey;
  458.          end;
  459.  
  460.             3:
  461.             begin
  462.                 clrscr;
  463.                 writeln;
  464.                 writeln('RELATÓRIO TOTAL');
  465.                 writeln;
  466.                 writeln;
  467.                 totalCada(principal,vetorNomes,vetorTotal);
  468.                 writeln;
  469.                 write('Aperte qualquer tecla para voltar ao Menu de Relatórios...');
  470.                 readkey;
  471.             end;
  472.            
  473.             0:
  474.          begin
  475.                 continuar:= false;
  476.             end;
  477.         end;
  478.     end;
  479. end;
  480.  
  481. {=================================================================================}
  482.  
  483. procedure menuOpcoes;
  484.  
  485. var
  486.     continuar: boolean;
  487.     opcao: integer;
  488.  
  489. begin
  490.    
  491.     continuar:= true;
  492.  
  493.    while continuar = true do
  494.    begin
  495.  
  496.       clrscr;
  497.  
  498.       writeln('________________________________________');
  499.       writeln('|                                      |');
  500.       writeln('|              O P Ç Õ E S             |');
  501.       writeln('|                                      |');
  502.       writeln('| 1. Mudar Nomes das Vacinas           |');
  503.       writeln('| 2. Voltar à Nomenclatura Padrão      |');
  504.         writeln('| 3. Ver Tabela de Dados               |');
  505.         writeln('|                                      |');
  506.       writeln('| 0. Voltar ao Menu Principal          |');
  507.       writeln('|______________________________________|');
  508.       writeln;
  509.  
  510.       write('Opção: ');
  511.       readln(opcao);
  512.       writeln;
  513.  
  514.       case opcao of
  515.  
  516.          1:
  517.          begin
  518.                 clrscr;
  519.                 writeln;
  520.                 writeln('MUDAR NOMES DAS VACINAS');
  521.                 receberNomes(vetorNomes,vetorNomesTotal);
  522.                 writeln;
  523.                 write('Aperte qualquer tecla para voltar ao Menu de Opções...');
  524.                 readkey;
  525.          end;
  526.  
  527.             2:
  528.             begin
  529.                 clrscr;
  530.                 writeln;
  531.                 writeln('VOLTAR À NOMENCLATURA PADRÃO');
  532.                 nomesPadrao(vetorNomes,vetorNomesTotal);
  533.                 writeln;
  534.                 writeln;
  535.                 writeln('Nomenclatura padrão definida');
  536.                 writeln;
  537.                 write('Aperte qualquer tecla para voltar ao Menu de Opções...');
  538.                 readkey;
  539.             end;
  540.  
  541.          3:
  542.          begin;
  543.             clrscr;
  544.                 imprimirTabela(principal,vetorMeses);
  545.                 legenda(vetorNomes);
  546.                 writeln;
  547.                 write('Aperte qualquer tecla para voltar ao Menu de Opções...');
  548.                 readkey;
  549.          end;
  550.  
  551.             0:
  552.             begin;
  553.                 continuar:= false;
  554.             end;
  555.  
  556.       end;
  557.  
  558.     end;
  559.  
  560. end;
  561.  
  562. {=================================================================================}
  563. {                                 PROGRAMA PRINCIPAL                              }
  564. {=================================================================================}
  565.  
  566. var
  567.     i, opcao: integer;
  568.     continuar: boolean;
  569.     opcaoSair: char;
  570.  
  571. begin
  572.  
  573.     nomesPadrao(vetorNomes,vetorNomesTotal); {define os nomes das vacinas com o padrão da prova}
  574.     nomesMes(vetorMeses); {define os nomes de cada mes referentes aos números 1 a 12}
  575.  
  576.     continuar:= true;
  577.  
  578.     while continuar = true do
  579.     begin
  580.  
  581.         clrscr;
  582.  
  583.         writeln('____________________________________________');
  584.         writeln('|                                          |');
  585.         writeln('|                 M E N U                  |');
  586.         writeln('|                                          |');
  587.         writeln('| 1. Inserir Dados Diários de Vacinação    |');
  588.         writeln('| 2. Relatórios                            |');
  589.         writeln('| 3. Opções                                |');
  590.         writeln('| 0. Sair do Programa                      |');
  591.         writeln('|__________________________________________|');
  592.         writeln;
  593.  
  594.         write('Opção: ');
  595.         readln(opcao);
  596.         writeln;
  597.    
  598.         case opcao of
  599.        
  600.             1:
  601.             begin
  602.                 receberDados(principal,vetorNomes);
  603.             end;
  604.  
  605.             2:
  606.             begin;
  607.                 menuRelatorios;
  608.             end;
  609.  
  610.             3:
  611.             begin
  612.                 menuOpcoes;
  613.             end;
  614.  
  615.             0:
  616.             begin
  617.                 writeln('Deseja sair do programa? Todos os dados serão perdidos');
  618.                 writeln;
  619.                 write('Responda "s" ou "n": ');
  620.                 readln(opcaoSair);
  621.                 if opcaoSair = 's' then
  622.                 begin
  623.                     continuar:=false;
  624.                 end
  625.                 else
  626.                 begin
  627.                     writeln;
  628.                     writeln;
  629.                     write('Aperte qualquer tecla para voltar ao menu principal...');
  630.                     readkey;
  631.                     clrscr;
  632.                 end;
  633.             end;
  634.  
  635.         end;
  636.     end;
  637.  
  638.     clrscr;
  639.     writeln;
  640.     writeln('Obrigado pela preferência.');
  641.     writeln;
  642. end.
  643.  
  644. {=================================================================================}
  645. {                                  FIM DO PROGRAMA                                }
  646. {=================================================================================}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement