Enviado em 17/09/2023 - 01:56h
Olá galera beleza?#include <ctime> #include <iostream> //Calculando idade atraves do nunero de sapato. //https://m.youtube.com/watch?v=yT8b0bLlYac //https://educacao.uol.com.br/disciplinas/geografia/ano-bissexto-por-que-a-cada-4-anos-fevereiro-tem-29-dias.htm using namespace std; // Estruturas para representar datas, horas e durações struct Date { int year; int month; int day; }; struct Time { int hours; int minutes; int seconds; }; struct Duration { long days; long months; long minutes; long hours; long seconds; }; // Função para calcular a diferença entre duas datas em dias int getDaysDifference(const Date& date1, const Date& date2) { tm timeinfo1 = {0}; timeinfo1.tm_year = date1.year - 1900; timeinfo1.tm_mon = date1.month - 1; timeinfo1.tm_mday = date1.day; std::tm timeinfo2 = {0}; timeinfo2.tm_year = date2.year - 1900; timeinfo2.tm_mon = date2.month - 1; timeinfo2.tm_mday = date2.day; time_t time1 = mktime(&timeinfo1); time_t time2 = mktime(&timeinfo2); int daysDiff = ((time2 - time1) / (60 * 60 * 24)); return daysDiff; } // Função para obter a data atual Date getCurrentDate() { time_t currentTime; time(¤tTime); tm* timeinfo = localtime(¤tTime); Date currentDate; currentDate.year = timeinfo->tm_year + 1900; currentDate.month = timeinfo->tm_mon + 1; currentDate.day = timeinfo->tm_mday; return currentDate; } // Função para obter o horário atual Time getCurrentTime() { time_t currentTime; time(¤tTime); tm* timeinfo = localtime(¤tTime); Time currentTimeStruct; currentTimeStruct.hours = timeinfo->tm_hour; currentTimeStruct.minutes = timeinfo->tm_min; currentTimeStruct.seconds = timeinfo->tm_sec; return currentTimeStruct; } // Função para calcular a duração entre duas datas e horas Duration calculateDuration(const Date& birthDate, const Time& birthTime, const Date& currentDate, const Time& currentTime) { tm t1 = {0}; t1.tm_year = birthDate.year - 1900; t1.tm_mon = birthDate.month - 1; t1.tm_mday = birthDate.day; t1.tm_hour = birthTime.hours; t1.tm_min = birthTime.minutes; t1.tm_sec = birthTime.seconds; tm t2 = {0}; t2.tm_year = currentDate.year - 1900; t2.tm_mon = currentDate.month - 1; t2.tm_mday = currentDate.day; t2.tm_hour = currentTime.hours; t2.tm_min = currentTime.minutes; t2.tm_sec = currentTime.seconds; time_t time1 = mktime(&t1); time_t time2 = mktime(&t2); double seconds = difftime(time2, time1); double minutes = seconds / 60; double hours = minutes / 60; double days = hours / 24; double months = days / 30.436875; // Média de dias em um mês (365,25 / 12) Duration duration; duration.seconds = static_cast<long>(seconds); duration.minutes = static_cast<long>(minutes); duration.hours = static_cast<long>(hours); duration.days = static_cast<long>(days); duration.months = static_cast<long>(months); return duration; } // Função para calcular a diferença entre dois horários em horas int getHoursDifference(const Time& currentTime, const Time& birthTime) { int secondsDiff = (currentTime.hours - birthTime.hours) * 3600 + (currentTime.minutes - birthTime.minutes) * 60 + (currentTime.seconds - birthTime.seconds); if (secondsDiff < 0) { secondsDiff += 24 * 3600; // Adicionar um dia em segundos } int hoursDiff = (secondsDiff / 3600); return hoursDiff; } // Função para exibir a idade e a sobrevida void displayAgeAndSurvival(const Date& birthDate, const Time& birthTime) { Date currentDate = getCurrentDate(); Time currentTime = getCurrentTime(); int days = getDaysDifference(birthDate, currentDate); int hours = getHoursDifference(birthTime, currentTime); int years = (days / 365); int months = ((days % 365) / 30); days = ((days % 365) % 30); int minutes = (hours * 60); int seconds = (minutes * 3600) % 60; cout << "Idade: " << years << " anos" << endl; cout << "Dias: " << days << endl; cout << "Meses: " << months << endl; cout << "Horas: " << hours << endl; cout << "Minutos: " << minutes << endl; cout << "Segundos: " << seconds << endl; } int main() { int idade; Date birthDate, currentDate; Time birthTime, currentTime; cout << "Informe a data de nascimento (dia mes ano): "; cin >> birthDate.day >> birthDate.month >> birthDate.year; currentDate = getCurrentDate(); currentTime = getCurrentTime(); idade = (currentDate.year - birthDate.year); cout << "\nInforme a hora de nascimento (horas minutos segundos): "; cin >> birthTime.hours >> birthTime.minutes >> birthTime.seconds; Duration duration = calculateDuration(birthDate, birthTime, currentDate, currentTime); std::cout << "Tempo de sobrevida: " << std::endl; std::cout << "Você tem: " << idade << " anos" << std::endl; std::cout << "Dias: " << duration.days << std::endl; std::cout << "Meses: " << duration.months << std::endl; std::cout << "Horas: " << duration.hours << std::endl; std::cout << "Minutos: " << duration.minutes << std::endl; std::cout << "Segundos: " << duration.seconds << " de vida desde o dia em que nasceu.."<< std::endl; displayAgeAndSurvival(birthDate, birthTime); return 0; }
Enviado em 17/09/2023 - 01:56h
Oi wiki.anon, que situação complicada, não é mesmo? Fazer o código rodar direito no celular pode ser um pouco desafiador.Enviado em 17/09/2023 - 21:19h
Olá wiki.anon,// Pega a entrada do usuário std::cin >> userHourOfBirth; // Atualiza a variável hourOfBirth hourOfBirth = userHourOfBirth;
Enviado em 19/09/2023 - 03:03h
// Pega a entrada do usuário std::cin >> userHourOfBirth; // Atualiza a variável hourOfBirth hourOfBirth = userHourOfBirth;
Enviado em 19/09/2023 - 03:04h
Olá wiki.anon,// Pega o tempo atual std::chrono::time_point<std::chrono::system_clock> now; now = std::chrono::system_clock::now(); // Converte para Unix timestamp std::chrono::duration<int> unixTimestamp = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch()); // Faça o mesmo com a data e hora de nascimento // Calcula a diferença int difference = unixTimestamp.count() - birthUnixTimestamp.count();
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
firefox nao guarda meus logins nos sites (1)
Instalar debian testing (13) "por cima" do debian 12 (2)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (1)