Jump to content
Fórum Script Brasil
  • 0

Quantos anos você tem [ C ]


BrunoZavanin

Question

Olá, sou estudante de Eng de Software do 1 ano e estou participando de uma maratona, na mesma caiu uma questão onde eu tinha que verificar a data de nascimento do cliente, exemplo:

Entrada

01/01/2007 //Data atual

10/02/2007 //Data de Nascimento

Saída

Data de nascimento errada

Entrada

09/06/2007 //Data Atual

28/02/1871 //Data Nascimento Errada Pois o cliente teria mais de 130 anos

Saída

Verificar Data de Nascimento

Entrada

12/11/2007

01/01/1984

Saída

23

Entrada

28/02/2005

29/02/2004

Saída

0

Meu código em C

#include <stdio.h>
#include <stdlib.h>
 int main (){
  int dia, mes, ano, i, n;
  int dia_n, mes_n, ano_n;
  int diafinal, mesfinal, anofinal;
  
  scanf("%d", &n);
  
  for (i=1; i<=n; i++){
  printf("\n");
  scanf("%d/%d/%d", &dia, &mes, &ano);
  scanf("%d/%d/%d", &dia_n, &mes_n, &ano_n);
  
  diafinal = dia-dia_n;
  mesfinal = mes-mes_n;
  anofinal = ano-ano_n;
  
  if((diafinal<0)&&(diafinal>31)&&(mesfinal<0)&&(mesfinal>12)&&(anofinal<0)){
  printf("Data Nascimento Errada\n");
}
else if (anofinal>=131){
printf("verificar Data de Nascimento");
}
else if ((diafinal>=0)&&(diafinal<=31)&&(mesfinal>=0)&&(mesfinal<=12)&&(anofinal>0)&&(anofinal<130)){
printf("%d", anofinal);
}
else if ((diafinal>=0)&&(diafinal<=31)&&(mesfinal>=0)&&(mesfinal<=12)&&(anofinal==0)){
printf("%d", anofinal);
}
  
}
 }
Edited by BrunoZavanin
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

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


int main(int argc, char** argv)
{
	int dia_nasc;
	int mes_nasc;
	int ano_nasc;
	
	int dia_atual;
	int mes_atual;
	int ano_atual;
	

	int data_final;
	int data1;

	
	
    printf("\nDigite Sua Data de Nasc. no Formato dia/mes/ano: \n\n");
	scanf("%d/%d/%d", &dia_nasc, &mes_nasc, &ano_nasc);
	
	printf("\nDigite O Ano Atual no Formato Dia/mes/ano: \n\n");
	scanf("%d/%d/%d", &dia_atual, &mes_atual, &ano_atual);
	
		
				
	while(ano_atual < ano_nasc){
		printf("\nDatas Invalidas!!! \nAno atual não pode ser menor que o ano de nascimento.\n\n");
			exit(1);
			if ( ano_atual < 0 || ano_nasc < 0){
			printf("\nData Invalida!!!\nO ano não pode ser igual a 0\n\n");
			exit(1);
		}
		
		if(mes_nasc > 12 || mes_atual > 12 || mes_nasc < 1 || mes_atual < 0){
			printf("\nData invalida!!!\nO mes não pode ser igual a 0 ou maior que 12 .\n\n");
			exit(1);
		}if(dia_nasc < 1 || dia_atual < 1 || dia_nasc > 30 || dia_atual > 30){
			printf("\nData invalida!!!\nO dia não pode ser menor que 0\n Ou Maior que 30.\n\n");
			exit(1);				
		}
	        
	}
	
	data_final = ano_atual - ano_nasc;
			if(data_final <= 0){
				data1 = mes_nasc * 30;
				
            printf("\nVoce nasceu %d/%d/%d\n\n", dia_nasc, mes_nasc, ano_nasc);
			printf("\tVoce tem %d Dias de nascimento\n\n", data1);
			}
			if(data_final > 80){
				data1 = mes_nasc * 30;
				
            printf("Idade fora da media segundo as Estatisticas,\nFavor informar o ano de nascimento acime de 1935.\n\n");
			exit(0);
			}
			printf("Voce nasceu %d/%d/%d\n\n", dia_nasc, mes_nasc, ano_nasc);
			printf("\tVoce tem %d Anos\n\n", data_final);
	return 0;
	} 

Não adicionei uma verificação aos anos bissexto e meses de 28 dias.

Não usei funções para não atrapalhar o seu raciocínio caso seu professor ainda não explicou funções, mas lembre-se fazer sempre por meio de funções torna o código mais legível.

Edited by Barao
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...