Ir para conteúdo
Fórum Script Brasil
  • 0

Receber uma data de um exame, calcular 180 dias corridos e mostrar a data de vencimento desse exame(180 dias) usando a data do sistema


WillianNasc

Pergunta

Olá, preciso de ajuda de como trabalhar com a biblioteca time.h

Preciso que o usuário entre com a data de um exame (dd/mm/aa), conte 180 dias (contando os meses com 31 dias e fevereiro com 28, por isso a data do sistema) e imprima a data de vencimento desse exame. Preciso que não exista margem de erro em dias, pois pode acarretar em problemas.

Obs. Não sei usar a biblioteca time.h, li sobre mas não encontrei como fazer isso.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Vamos por partes. 

1º é preciso saber como capturar a data do sistema. Para fazer isso o código é o seguinte:

#include "stdio.h"
#include "stdlib.h"
#include "time.h"

int main()
{
	time_t agora;
	struct tm *tm_agora;
	char texto[100];

	agora = time(NULL);
	tm_agora = localtime(&agora);
	strftime(texto, sizeof(texto), "%d/%m/%y", tm_agora);
	printf("%s", texto);

	printf("\n");

	system("pause");

	return 0;
}

Tendo a data atual do sistema já teria como fazer o cálculo. Vê se isso q passei ajuda um pouco, ok?

Link para o comentário
Compartilhar em outros sites

  • 0

Também daria para imprimir algo assim e não como imprimi a data atual do sistema:

printf("\nO exame foi feito dia %s", texto);

E aí amigo é se virar para fazer o cálculo. Inda não fiz algo assim mas vou procurar fazer e logo q tiver uma resposta te passo, ok?

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, amigo. Fiz uma pequena demonstração de como você poderia fazer o cálculo. Só que é o seguinte, como você mesmo disse q não pode existir margem de erro, pois isso pode acarretar em problemas, não garanto com 100% de certeza que a minha solução está correta. Mas a partir desse código você pode adaptar para a forma como precisa fazer que é a de solicitar ao usuário um data de um exame e somar a mesma 180 dias. Dá uma olhada no código e vê se ajuda:

#include "stdio.h"
#include "stdlib.h"
#include "time.h"

int main()
{
	time_t agora;
	struct tm *tm_agora;
	char dataAtual[50];
	char dataVencimento[50];

	agora = time(NULL);
	tm_agora = localtime(&agora);
	strftime(dataAtual, sizeof(dataAtual), "%d/%m/%Y", tm_agora);
	
	//system("date");
	agora += (180 * 24) * 60 * 60; // avança 180 dias
	tm_agora = localtime(&agora);
	strftime(dataVencimento, sizeof(dataVencimento), "%d/%m/%Y", tm_agora);

	printf("\nO exame foi feito na data de %s\n\n", dataAtual);

	printf("O exame vence na data de %s", dataVencimento);

	printf("\n\n");

	system("pause");

	return 0;
}

como você pode ver no código, a data é armazenada em uma String, então aí teria q adaptar esse pequeno exemplo ao seu código da maneira como deseja. Mas como disse: não garanto que a solução que apresentei está 100% correta, té mesmo porque foi feito de maneira bastante rápida. Mas creio q já pode ajudar um pouco para q você resolva seu problema.

Dar a resposta pronta aí é muita sacanagem, e até mesmo iria atrapalhar o seu aprendizado, pois você ficaria apenas na base do copia/cola e assim não acaba aprendendo nada. Isso posso garantir

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...