Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * 1] Complete o codigo da funcao fimEvento do slide anterior
- */
- #include <iostream>
- using namespace std;
- // ============= Estrutura data ===========
- typedef struct
- {
- int dia;
- int mes;
- int ano;
- }Data;
- // =========== Prototipo das funcoes ============
- Data fimEvento(Data inicio, int duracao);
- int main()
- {
- Data dataInicio;
- Data dataFinal;
- int qtdDias;
- // Entrada de dados
- cout << "Entre com a dia: ";
- cin >> dataInicio.dia;
- cout << "Entre com a mes: ";
- cin >> dataInicio.mes;
- cout << "Entre com a ano: ";
- cin >> dataInicio.ano;
- cout << "qtd de dias: ";
- cin >> qtdDias;
- // Chama a funcao para calcular a data final
- dataFinal = fimEvento(dataInicio, qtdDias);
- // Exibe o resultado
- cout << endl << endl;
- cout << " ============== Data Final ===============" << endl;
- cout << " \t" << dataFinal.dia << "/" << dataFinal.mes << "/" << dataFinal.ano << endl;
- system("pause>nul");
- return 0;
- }
- // ============= Implementação dos prototipos =============
- Data fimEvento(Data inicio, int duracao)
- {
- Data resultado;
- // Inicia resultado como o proprio inicio
- resultado = inicio;
- // Add a qtd de dias recebidos
- resultado.dia += duracao;
- // Repete enquanto a qtd de dias for maior que trinta
- while (resultado.dia > 30 )
- {
- resultado.mes++; // Incrementa o mes
- resultado.dia -= 30; // Subtrai os 30 dias
- // Verifica se o mes passou de 12
- if (resultado.mes > 12)
- {
- resultado.ano++; // Incrementa o ano
- resultado.mes -= 12; // subtrai a qtd de meses por 12
- }
- }
- return resultado;
- }
- /*
- * 2] Escreva uma função que receba dois structs do tipo dma, cada um
- * representando uma data valida, e devolva o numero de dias que decorreram
- * entre as duas datas
- */
- #include <iostream>
- using namespace std;
- // ============= Estrutura data ===========
- struct DMA
- {
- int dia;
- int mes;
- int ano;
- };
- // Outra forma de declarar
- typedef struct DMA dma;
- // =========== Prototipo das funcoes ============
- int difDMA(dma, dma);
- int main()
- {
- dma data1;
- dma data2;
- int resultado;
- // ====== Entrada de dados =======
- cout << endl;
- cout << "======== Data 1 ===========" << endl;
- cout << "Entre com a dia: ";
- cin >> data1.dia;
- cout << "Entre com a mes: ";
- cin >> data1.mes;
- cout << "Entre com a ano: ";
- cin >> data1.ano;
- cout << endl;
- cout << "======== Data 2 ===========" << endl;
- cout << "Entre com a dia: ";
- cin >> data2.dia;
- cout << "Entre com a mes: ";
- cin >> data2.mes;
- cout << "Entre com a ano: ";
- cin >> data2.ano;
- // ========= Calcula a diferenca em dias ===========
- resultado = difDMA(data1, data2);
- // ======== Exibe a saida de dados =============
- cout << endl << endl;
- cout << "Diferenca de " << resultado << " dias..." << endl;
- system("pause>nul");
- return 0;
- }
- // ============= Implementação dos prototipos =============
- int difDMA(dma eventoA, dma eventoB )
- {
- int totalDias = 0;
- // Verifica qual data é a maior
- if (eventoA.ano > eventoB.ano)
- {
- // Converte tudo para dias e subtrai o maior pelo menor
- totalDias = (eventoA.ano - eventoB.ano) * 12 * 30;
- totalDias += eventoA.mes * 30 - eventoB.mes * 30;
- totalDias += eventoA.dia - eventoB.dia;
- }
- else
- {
- totalDias = (eventoB.ano - eventoA.ano) * 12 * 30;
- totalDias += eventoB.mes * 30 - eventoA.mes * 30;
- totalDias += eventoB.dia - eventoA.dia;
- }
- return abs(totalDias);
- }
- /*
- * 3] Escreva uma funcao que receba um numero inteiro que representa um intervalo de tempo
- * medido em minutos e devolva o correspondente numero de horas e minutos ( por exemplo,
- * converte 131 minutos em 2horas e 11minutos).
- */
- #include <iostream>
- using namespace std;
- // ============= Estrutura data ===========
- typedef struct hm
- {
- int horas;
- int minutos;
- }horario;
- // =========== Implementacao das funcoes ============
- horario conversor(int minutos)
- {
- horario resultado = {0};
- resultado.minutos = minutos;
- while (resultado.minutos >= 60)
- {
- resultado.horas++;
- resultado.minutos -= 60;
- }
- return resultado;
- }
- int main()
- {
- int minutos;
- horario res = {0};
- // Entrada de dados
- cout << "Minutos: ";
- cin >> minutos;
- // Converte
- res = conversor(minutos);
- // Exibe o resultado
- cout << endl << endl;
- cout << "Convertido: " << res.horas << "h e " << res.minutos << "min" << endl;
- system("pause>nul");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement