Ir ao conteúdo

C Sem resposta no Programa


Ir à solução Resolvido por isrnick,

Posts recomendados

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

int main()
{
int dia, mes, ano;

    printf("*VERIFICACAO DE DATA VALIDA* \n");
    printf("\n");

    printf("DIGITE UM DIA: ");
    scanf("%d", &dia);

    printf("DIGITE UM MES: ");
    scanf("%d", &mes);

    printf("DIGITE UM ANO: ");
    scanf("%d", &ano);

     if(mes>0&&mes<=12 && ano>0){

    if((mes==2) && (dia>0&&dia<=28 &&)){
        printf("%d/%d/%d EH VALIDA", dia, mes, ano);
    }
     else if((mes==4||mes==6||mes==9||mes==1) && (dia>0 && dia<=30)){
        printf("%d/%d/%d EH VALIDA", dia, mes, ano);
    }
     else if((mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12) && (dia>0 && dia<=31)){
        printf("%d/%d/%d EH VALIDA", dia, mes, ano);
     }
     else{
        printf("%d/%d/%d NAO EH VALIDA", dia, mes, ano);
     }


}
    return 0;
}

Quando eu coloco por exemplo a seguinte situação no programa : 9/15/2002 ou 26/20/2002 o Programa não me responde NADA! o que poder ser?

  • Curtir 1
  • Amei 1
Postado
30 minutos atrás, Pedrockz disse:

Quando eu coloco por exemplo a seguinte situação no programa : 9/15/2002 ou 26/20/2002 o Programa não me responde NADA! o que poder ser?

 

 

adicionado 4 minutos depois

eu acho que isso resolveria

if dia>0 && mes >0 && ano>0 && dia <=31 && mes<=12

o resto cairia no else

 

adicionado 8 minutos depois

@Pedrockz

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

int main()
{
int dia, mes, ano;

    printf("*VERIFICACAO DE DATA VALIDA* \n");
    printf("\n");

    printf("DIGITE UM DIA: ");
    scanf("%d", &dia);

    printf("DIGITE UM MES: ");
    scanf("%d", &mes);

    printf("DIGITE UM ANO: ");
    scanf("%d", &ano);

     if (dia>0 && mes >0 && ano>0 && dia <=31 && mes<=12){
      printf("%d/%d/%d  EH VALIDA", dia, mes, ano);
     }
     else{
        printf("%d/%d/%d NAO EH VALIDA", dia, mes, ano);
     }


}

 

  • Curtir 1
  • Obrigado 1
  • Solução
Postado

Com o código indentado corretamente fica mais fácil de ver onde está o erro.
O problema é que estava faltando o else para dizer que o com mês menor ou igual a 0 ou maior que 12, ou ano menor ou igual a 0 a data não é válida.

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

int main()
{
    int dia, mes, ano;

    printf("*VERIFICACAO DE DATA VALIDA* \n");
    printf("\n");

    printf("DIGITE UM DIA: ");
    scanf("%d", &dia);

    printf("DIGITE UM MES: ");
    scanf("%d", &mes);

    printf("DIGITE UM ANO: ");
    scanf("%d", &ano);

    if(mes>0&&mes<=12 && ano>0){

        if((mes==2) && (dia>0&&dia<=28 &&)){
            printf("%d/%d/%d EH VALIDA", dia, mes, ano);
        }
        else if((mes==4||mes==6||mes==9||mes==1) && (dia>0 && dia<=30)){
            printf("%d/%d/%d EH VALIDA", dia, mes, ano);
        }
        else if((mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12) && (dia>0 && dia<=31)){
            printf("%d/%d/%d EH VALIDA", dia, mes, ano);
        }
        else{
            printf("%d/%d/%d NAO EH VALIDA", dia, mes, ano);
        }
    }
    else{ //<---Faltava esse else aqui
        printf("%d/%d/%d NAO EH VALIDA", dia, mes, ano);
    }
    
    return 0;
}

 

Ainda está faltando considerar os anos bissextos, quando fevereiro tem 29 dias.

  • Obrigado 1

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...