Ir ao conteúdo

Posts recomendados

Postado

Já tenho boa parte do código pronto, funcional entre 2 anos diferentes, o problema é que, quando os anos são iguais ocorre erros.

De 01/01/2001 a 02/01/2001 por exemplo, seria 0 dias, mas resulta em 365.

Eu fiz uma limitação para ser o ano for igual, mas acaba nessa soma de 365, então pensei em tirar 365 se o ano for igual, e novamente resulta em 365. Alguém consegue me ajudar em identificar o que fiz de errado?

Spoiler

#include <stdlib.h>
#include <stdio.h>

int DiaN;
int MesN;
int AnoN;

int DiaA;
int MesA;
int AnoA;

int TotalDiasA;
int TotalDiasN;

int TotalDias;

int cta;

int diasMes[12];

main(){
	// atribuir dias aos meses	
	diasMes[0] = 31;
	diasMes[1] = 28;
	diasMes[2] = 31;
	diasMes[3] = 30;
	diasMes[4] = 31;
	diasMes[5] = 30;
	diasMes[6] = 31;
	diasMes[7] = 31;
	diasMes[8] = 30;
	diasMes[9] = 31;
	diasMes[10] = 30;
	diasMes[11] = 31;
		
	printf("\n Digite o ano de aniversario: ");
	scanf("%d", &AnoN);
	
	//se for bissexto fev tem 29
	if(AnoN % 4 == 0){
		
		diasMes[1] = 29;
		
	}
	
	while(MesN < 1 || MesN > 12){
		
		printf("\n Digite o mes de aniversario: ");
		scanf("%d", &MesN);
}
	while(DiaN < 1 || DiaN > diasMes[MesN - 1]){
		
		printf("\n Digite o dia de aniversario: ");
		scanf("%d", &DiaN);
		
}
    TotalDias = diasMes[MesN-1] - DiaN; //Conta os dias para o mês acabar;
	for(cta = MesN+1; cta <= 12 ; cta++){ //Conta os meses para o ano acabar;
		TotalDias +=  diasMes[cta-1];
	}

	
	//voltar fevereiro pra 28 pra validar
	diasMes[1] = 28;
	
	while(AnoA < AnoN || (AnoA - AnoN) >= 150){
		
	printf("\n Digite o ano atual: ");
	scanf("%d", &AnoA);
	
}
	
	//ver se tb é bissexto
	if(AnoA % 4 == 0){
		
		diasMes[1] = 29;
		
	}
	
	while(MesA < 1 || MesA > 12){
		
		printf("\n Digite o mes atual: ");
		scanf("%d", &MesA);
}
	while(DiaA < 1 || DiaA > diasMes[MesA - 1]){
		
		printf("\n Digite o dia atual: ");
		scanf("%d", &DiaA);
		
}
	for(cta = 1; cta < MesA ; cta++){ // Conta os meses que tem no ano atual
		TotalDias += diasMes[cta-1];
	}
	TotalDias += DiaA; //Contas os dias no último  mes do ano atual

	if(AnoN != AnoA){
	for (cta = AnoN+1; cta < AnoA; cta++){
	if (cta % 4 == 0){
		TotalDias += 366; else TotalDias += 365;}
	}
	}
	
	if(AnoN == AnoA){
		TotalDias = TotalDias - 365
	}
	
	printf("\nVocê viveu : ");
	printf("%d", TotalDias);
	printf(" dias.");
}

 

 

Postado

A ideia está correta, mas seu programa não compila(tem alguns erros de sintaxe) então não sei o motivo de não ter funcionado. Este abaixo deve funcionar:

#include <stdlib.h>
#include <stdio.h>

int DiaN;
int MesN;
int AnoN;

int DiaA;
int MesA;
int AnoA;

int TotalDiasA;
int TotalDiasN;

int TotalDias;

int cta;

int diasMes[12];

main(){
	// atribuir dias aos meses	
	diasMes[0] = 31;
	diasMes[1] = 28;
	diasMes[2] = 31;
	diasMes[3] = 30;
	diasMes[4] = 31;
	diasMes[5] = 30;
	diasMes[6] = 31;
	diasMes[7] = 31;
	diasMes[8] = 30;
	diasMes[9] = 31;
	diasMes[10] = 30;
	diasMes[11] = 31;
		
	printf("\n Digite o ano de aniversario: ");
	scanf("%d", &AnoN);
	
	//se for bissexto fev tem 29
	if(AnoN % 4 == 0){
		
		diasMes[1] = 29;
		
	}
	
	while(MesN < 1 || MesN > 12){
		
		printf("\n Digite o mes de aniversario: ");
		scanf("%d", &MesN);
}
	while(DiaN < 1 || DiaN > diasMes[MesN - 1]){
		
		printf("\n Digite o dia de aniversario: ");
		scanf("%d", &DiaN);
		
}
    TotalDias = diasMes[MesN-1] - DiaN; //Conta os dias para o mês acabar;
	for(cta = MesN+1; cta <= 12 ; cta++){ //Conta os meses para o ano acabar;
		TotalDias +=  diasMes[cta-1];
	}

	
	//voltar fevereiro pra 28 pra validar
	diasMes[1] = 28;	
	
	while(AnoA < AnoN || (AnoA - AnoN) >= 150){
		
	printf("\n Digite o ano atual: ");
	scanf("%d", &AnoA);
	
}
	
	//ver se tb é bissexto
	if(AnoA % 4 == 0){
		
		diasMes[1] = 29;
		
	}
	
	while(MesA < 1 || MesA > 12){
		
		printf("\n Digite o mes atual: ");
		scanf("%d", &MesA);
}
	while(DiaA < 1 || DiaA > diasMes[MesA - 1]){
		
		printf("\n Digite o dia atual: ");
		scanf("%d", &DiaA);
		
}
	for(cta = 1; cta < MesA ; cta++){ // Conta os meses que tem no ano atual
		TotalDias += diasMes[cta-1];
	}
	TotalDias += DiaA; //Contas os dias no último  mes do ano atual

	

	
	for (cta = AnoN+1; cta < AnoA; cta++)
	  if (cta % 4 == 0) TotalDias += 366; else TotalDias += 365;
	
	if (AnoN == AnoA) TotalDias -= (365 + (AnoN % 4 ? 0 : 1));
	
	printf("\nVocê viveu : ");
	printf("%d", TotalDias);
	printf(" dias.");
};

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...