Calcular minha idade fornecendo data de nascimento e comparando com data do sistema

1. Calcular minha idade fornecendo data de nascimento e comparando com data do sistema

gilmar ribeiro santana
gilmarribeiro

(usa Outra)

Enviado em 15/03/2020 - 09:33h

Olá pessoal, sou estudante de programação e começando a dar os primeiros passos.
Eu procurei aqui no fórum algo sobre o assunto, mas não obtive nada que conseguisse juntar as informações que preciso, por isso, venho humildemente, solicitar ajuda.
Estou tentando montar um programa em C que eu informe minha data de nascimento e o programa compare com a data atual do sistema e entregue o resultado.
Seria algo do tipo:
1- Informe sua data de nascimento
2- O programa calcula com base no calendário atual do sistema
3- Entrega o resultado você tem x anos.
Como sou iniciante no assunto, eu montei uma estrutura que funciona mas de forma manual, ou seja, eu informando o ano de nascimento e o ano atual.
#include <stdio.h>

int main (void){
int anoatual;
int anodenascimento;
int idade;
printf("Digite o ano atual:\n");
scanf("%d", &anoatual);

printf("Digite o ano de nascimento:\n");
scanf("%d", &anodenascimento);

idade=(anoatual-anodenascimento);

printf ("A idade e:%d",idade);

return 0;
}

Fiz outro programa também para mostrar a data do sistema.

#include <stdio.h>
#include <time.h>

int main(void){

struct tm *data_atual;
time_t segundos;
time(&segundos);

data_atual = localtime(&segundos);

printf("\nDia: %d/", data_atual->tm_mday);
printf("Mes: %d/", data_atual->tm_mon+1);
printf("Ano: %d\n\n", data_atual->tm_year+1900);

return 0;
}

Mas não sei como automatizar isso, ou seja, só perguntar a data de nascimento de uma pessoa dd mm aaaa e o programa comparar com o calendário do sistema e entregar a idade x anos.




  


2. Re: Calcular minha idade fornecendo data de nascimento e comparando com data do sistema

Rodrigo
omag0

(usa Debian)

Enviado em 15/03/2020 - 10:02h

Amigo, não querendo ser grosso, mas essa resposta você encontra no Google ou na doc oficial do C. Não programo em C mas bastou jogar no Google "How get system date time with C" e foi mostrado várias páginas.

Aprenda a pesquisar , isso é o primeiro passo para aprender


3. Re: Calcular minha idade fornecendo data de nascimento e comparando com data do sistema

gilmar ribeiro santana
gilmarribeiro

(usa Outra)

Enviado em 15/03/2020 - 10:27h

Poxa amigo, desculpa minha incapacidade, mas tenho procurado desde ontem sobre esse assunto. Sobre como apresentar a data atual do sistema eu consegui fazer, conforme coloquei acima, sobre como calcular a diferença com o usuário fornecendo ano de nascimento e ano atual eu também consegui, conforme coloquei acima.
Minha dificuldade é juntar as duas operações, com o usuário fornecendo apenas a data de nascimento (dd mm aaaa) e o programa comparar com o sistema e entregar o resultado. Eu não sei como fazer. Caso você conheça o link com essa informação e puder gentilmente compartilhar, eu ficaria tremendamente agradecido.
Paz e bem.


4. Re: Calcular minha idade fornecendo data de nascimento e comparando com data do sistema

5. Re: Calcular minha idade fornecendo data de nascimento e comparando com data do sistema

Adriano Siqueira
adrisiq

(usa KDE Neon)

Enviado em 15/03/2020 - 21:19h

Está aí. Não está completo, mas está funcional. Precisa fazer as perfumarias para interagir com o usuário.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

struct tm pegarDataSistema();

int calcularIdade(struct tm *dataAtual, struct tm *dataNascimento);

int main() {
struct tm dataAtual = pegarDataSistema();

struct tm dataNascimento = pegarDataSistema();
dataNascimento.tm_mday = 0; // Preencha esse campo
dataNascimento.tm_mon = 0; // Preencha esse campo
dataNascimento.tm_year = 0; // Preencha esse campo

int idade = calcularIdade(&dataAtual, &dataNascimento);

printf("Você tem %i anos de idade. \n", idade);
return EXIT_SUCCESS;
}

struct tm pegarDataSistema() {
time_t temp = time(NULL);

struct tm dataAtual = *localtime(&temp);
dataAtual.tm_year += 1900; // Compensa a forma como é contado o ano

return dataAtual;
}

int calcularIdade(struct tm *dataAtual, struct tm *dataNascimento) {
int idade = dataAtual->tm_year - dataNascimento->tm_year;

/*
* Verifica as condições para determinar se já fez aniversário.
* Caso não tenha feito ainda, decrementamos a idade para compensar.
*/
if (dataAtual->tm_mon < dataNascimento->tm_mon) {
idade -= 1;
} else if (dataAtual->tm_mon == dataNascimento->tm_mon) {
if (dataAtual->tm_mday < dataNascimento->tm_mday) {
idade -= 1;
}
}

return idade;
}



6. Re: Calcular minha idade fornecendo data de nascimento e comparando com data do sistema

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/03/2020 - 07:22h

Curiosamente, a postagem original mostrava a faca num programa e o queijo em outro. Para cortar a fatia, era só juntar os dois.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


7. Re: Calcular minha idade fornecendo data de nascimento e comparando com data do sistema

gilmar ribeiro santana
gilmarribeiro

(usa Outra)

Enviado em 17/03/2020 - 20:48h

paulo1205 escreveu:

Curiosamente, a postagem original mostrava a faca num programa e o queijo em outro. Para cortar a fatia, era só juntar os dois.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


Obrigado pelo comentário Paulo, mas sou bem iniciante no assunto não sei como juntar essas peças.
Eu nunca programei nada na minha vida e até bem pouco tempo não fazia a menor diferença entre logaritmo e algorítimo e tem 20 dias que eu comecei a estudar algoritmos computacionais e agora linguagem C, então sou um completo iniciante no assunto.


8. Re: Calcular minha idade fornecendo data de nascimento e comparando com data do sistema

gilmar ribeiro santana
gilmarribeiro

(usa Outra)

Enviado em 17/03/2020 - 20:49h

adrisiq escreveu:

Está aí. Não está completo, mas está funcional. Precisa fazer as perfumarias para interagir com o usuário.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

struct tm pegarDataSistema();

int calcularIdade(struct tm *dataAtual, struct tm *dataNascimento);

int main() {
struct tm dataAtual = pegarDataSistema();

struct tm dataNascimento = pegarDataSistema();
dataNascimento.tm_mday = 0; // Preencha esse campo
dataNascimento.tm_mon = 0; // Preencha esse campo
dataNascimento.tm_year = 0; // Preencha esse campo

int idade = calcularIdade(&dataAtual, &dataNascimento);

printf("Você tem %i anos de idade. \n", idade);
return EXIT_SUCCESS;
}

struct tm pegarDataSistema() {
time_t temp = time(NULL);

struct tm dataAtual = *localtime(&temp);
dataAtual.tm_year += 1900; // Compensa a forma como é contado o ano

return dataAtual;
}

int calcularIdade(struct tm *dataAtual, struct tm *dataNascimento) {
int idade = dataAtual->tm_year - dataNascimento->tm_year;

/*
* Verifica as condições para determinar se já fez aniversário.
* Caso não tenha feito ainda, decrementamos a idade para compensar.
*/
if (dataAtual->tm_mon < dataNascimento->tm_mon) {
idade -= 1;
} else if (dataAtual->tm_mon == dataNascimento->tm_mon) {
if (dataAtual->tm_mday < dataNascimento->tm_mday) {
idade -= 1;
}
}

return idade;
}


Muito obrigado por sua ajuda. Vou estudar seu código. Obrigado.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts