olá, eu tenho esse código, e o objetivo é verificar o mês de fevereiro, mas infelizmente quando a data ta certa ele não faz a condição que eu quero e simplesmente o programa termina. Ou seja, ele tinha que ver o if do carater e imprimir a idade, a data 29 02 2020 o programa aceita esta data só que termina imediatamente o programa. podem ajudar-me , por favor.
#include <stdio.h>
int main (void)
{
char carater ;
int dia_do_nascimento, mes_do_nascimento, ano_do_nascimento;
int dia, mes, ano, calcula_idade;
int dia1,ano1,mes1;
int junto, idade;
scanf("%c %d %d %d %d %d %d", &carater, &dia_do_nascimento, &mes_do_nascimento, &ano_do_nascimento, &dia, &mes, &ano);
if(dia >31){
if(mes == 1 || mes ==3 || mes ==5 || mes ==7 || mes ==8 || mes ==10 || mes == 12){
printf("Data actual invalida \n");
}
}else if(dia>30){
if (mes == 4 || mes == 6 || mes == 9 || mes == 11){
printf("Data actual invalida \n");
}
}else if(mes == 2 && dia >28){
if(!(ano%4 == 0 && ano %100 != 0) || ano % 400 == 0){
printf("Data actual invalida \n");
}
}else if(mes == 2 && dia >29){
if(!(ano%4 == 0 && ano %100 != 0) || ano % 400 == 0){
printf("Data actual invalida \n");
}
}else{
if(dia_do_nascimento>31){
if(mes_do_nascimento == 1 || mes_do_nascimento ==3 || mes_do_nascimento ==5 || mes_do_nascimento ==7
|| mes_do_nascimento ==8 || mes_do_nascimento ==10 || mes_do_nascimento == 12){
printf("Data de nascimento invalida \n");
}
}else if(dia_do_nascimento>30){
if (mes_do_nascimento == 4 || mes_do_nascimento == 6 || mes_do_nascimento == 9 || mes_do_nascimento == 11){
printf("Data de nascimento invalida \n");
}
}else{
if((dia_do_nascimento<1 || dia_do_nascimento>31) || (dia<1 || dia >31)){
printf("Data de nascimento invalida \n");
}else{
if((mes_do_nascimento <1 || mes_do_nascimento >12) || (ano_do_nascimento<=1900 || ano_do_nascimento>2020) || (mes<mes_do_nascimento && ano == ano_do_nascimento)){
printf("Data de nascimento invalida \n");
}else{
if((mes<1 || mes>12) || (ano <=1900 || ano > 2020)){
printf("Data actual invalida \n");
}else{
if((ano < ano_do_nascimento) || (dia<dia_do_nascimento && ano_do_nascimento == ano)){
printf("Data actual inferior a data de nascimento");
}else{
if (carater == 'a'){
calcula_idade = 365*ano + 30*mes + dia- 365*ano_do_nascimento - 30*mes_do_nascimento - dia_do_nascimento;
ano1 = calcula_idade/365;
calcula_idade = calcula_idade%365;
mes1 = calcula_idade/30;
calcula_idade = calcula_idade%30;
dia1 = calcula_idade;
printf("%d anos", ano1);
}
}
}
}
}
se alguem poder ajudar, é importante