Advertisement
F_THIAGO

Exercicios de struct

May 27th, 2019
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.39 KB | None | 0 0
  1. /*
  2. *   1] Complete o codigo da funcao fimEvento do slide anterior
  3. */
  4.  
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. // ============= Estrutura data ===========
  10. typedef struct
  11. {
  12.     int dia;
  13.     int mes;
  14.     int ano;
  15. }Data;
  16.  
  17. // =========== Prototipo das funcoes ============
  18. Data fimEvento(Data inicio, int duracao);
  19.  
  20. int main()
  21. {
  22.     Data dataInicio;
  23.     Data dataFinal;
  24.     int qtdDias;
  25.  
  26.     // Entrada de dados
  27.     cout << "Entre com a dia: ";
  28.     cin >> dataInicio.dia;
  29.    
  30.     cout << "Entre com a mes: ";
  31.     cin >> dataInicio.mes;
  32.  
  33.     cout << "Entre com a ano: ";
  34.     cin >> dataInicio.ano;
  35.  
  36.     cout << "qtd de dias: ";
  37.     cin >> qtdDias;
  38.  
  39.     // Chama a funcao para calcular a data final
  40.     dataFinal = fimEvento(dataInicio, qtdDias);
  41.  
  42.     // Exibe o resultado
  43.     cout << endl << endl;
  44.     cout << " ============== Data Final ===============" << endl;
  45.     cout << " \t" << dataFinal.dia << "/" << dataFinal.mes << "/" << dataFinal.ano << endl;
  46.  
  47.     system("pause>nul");
  48.     return 0;
  49. }
  50.  
  51. // ============= Implementação dos prototipos =============
  52. Data fimEvento(Data inicio, int duracao)
  53. {
  54.     Data resultado;
  55.    
  56.     // Inicia resultado como o proprio inicio
  57.     resultado = inicio;
  58.    
  59.     // Add a qtd de dias recebidos
  60.     resultado.dia += duracao;
  61.  
  62.     // Repete enquanto a qtd de dias for maior que trinta
  63.     while (resultado.dia > 30 )
  64.     {
  65.         resultado.mes++;        // Incrementa o mes
  66.         resultado.dia -= 30;            // Subtrai os 30 dias
  67.  
  68.         // Verifica se o mes passou de 12
  69.         if (resultado.mes > 12)
  70.         {
  71.             resultado.ano++; // Incrementa o ano
  72.             resultado.mes -= 12; // subtrai a qtd de meses por 12
  73.         }
  74.     }
  75.  
  76.     return resultado;
  77. }
  78.  
  79.  
  80. /*
  81. *   2] Escreva uma função que receba dois structs do tipo dma, cada um
  82. * representando uma data valida, e devolva o numero de dias que decorreram
  83. * entre as duas datas
  84. */
  85.  
  86. #include <iostream>
  87.  
  88. using namespace std;
  89.  
  90. // ============= Estrutura data ===========
  91. struct DMA
  92. {
  93.     int dia;
  94.     int mes;
  95.     int ano;
  96. };
  97.  
  98. // Outra forma de declarar
  99. typedef struct DMA dma;
  100.  
  101. // =========== Prototipo das funcoes ============
  102. int difDMA(dma, dma);
  103.  
  104. int main()
  105. {
  106.     dma data1;
  107.     dma data2;
  108.     int resultado;
  109.  
  110.     // ====== Entrada de dados =======
  111.     cout << endl;
  112.     cout << "======== Data 1 ===========" << endl;
  113.     cout << "Entre com a dia: ";
  114.     cin >> data1.dia;
  115.     cout << "Entre com a mes: ";
  116.     cin >> data1.mes;
  117.     cout << "Entre com a ano: ";
  118.     cin >> data1.ano;
  119.  
  120.     cout << endl;
  121.     cout << "======== Data 2 ===========" << endl;
  122.     cout << "Entre com a dia: ";
  123.     cin >> data2.dia;
  124.     cout << "Entre com a mes: ";
  125.     cin >> data2.mes;
  126.     cout << "Entre com a ano: ";
  127.     cin >> data2.ano;
  128.  
  129.  
  130.     // ========= Calcula a diferenca em dias ===========
  131.     resultado = difDMA(data1, data2);
  132.  
  133.     // ======== Exibe a saida de dados =============
  134.     cout << endl << endl;
  135.     cout << "Diferenca de " << resultado << " dias..." << endl;
  136.  
  137.     system("pause>nul");
  138.     return 0;
  139. }
  140.  
  141. // ============= Implementação dos prototipos =============
  142. int difDMA(dma eventoA, dma eventoB )
  143. {
  144.     int totalDias = 0;
  145.    
  146.     // Verifica qual data é a maior
  147.     if (eventoA.ano > eventoB.ano)
  148.     {
  149.         // Converte tudo para dias e subtrai o maior pelo menor
  150.         totalDias = (eventoA.ano - eventoB.ano) * 12 * 30;
  151.         totalDias += eventoA.mes * 30 - eventoB.mes * 30;
  152.         totalDias += eventoA.dia - eventoB.dia;
  153.     }
  154.     else
  155.     {
  156.         totalDias = (eventoB.ano - eventoA.ano) * 12 * 30;
  157.         totalDias += eventoB.mes * 30 - eventoA.mes * 30;
  158.         totalDias += eventoB.dia - eventoA.dia;
  159.     }
  160.  
  161.     return abs(totalDias);
  162. }
  163.  
  164.  
  165. /*
  166. *   3] Escreva uma funcao que receba um numero inteiro que representa um intervalo de tempo
  167. * medido em minutos e devolva o correspondente numero de horas e minutos ( por exemplo,
  168. * converte 131 minutos em 2horas e 11minutos).
  169. */
  170.  
  171. #include <iostream>
  172.  
  173. using namespace std;
  174.  
  175. // ============= Estrutura data ===========
  176. typedef struct hm
  177. {
  178.     int horas;
  179.     int minutos;
  180. }horario;
  181.  
  182. // =========== Implementacao das funcoes ============
  183. horario conversor(int minutos)
  184. {
  185.     horario resultado = {0};
  186.     resultado.minutos = minutos;
  187.    
  188.     while (resultado.minutos >= 60)
  189.     {
  190.         resultado.horas++;
  191.         resultado.minutos -= 60;
  192.     }
  193.  
  194.     return resultado;
  195. }
  196.  
  197. int main()
  198. {
  199.     int minutos;
  200.     horario res = {0};
  201.  
  202.     // Entrada de dados
  203.     cout << "Minutos: ";
  204.     cin >> minutos;
  205.  
  206.     // Converte
  207.     res = conversor(minutos);
  208.  
  209.     // Exibe o resultado
  210.     cout << endl << endl;
  211.     cout << "Convertido: " << res.horas << "h e " << res.minutos << "min" << endl;
  212.  
  213.     system("pause>nul");
  214.     return 0;
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement