Jump to content
Sign in to follow this  
Alvess

Validar as datas

Recommended Posts

Alvess

olá Portugal a programar!

Tenho aqui o problema sobre uma funçãopara validar as datas,

tenho aqui o;

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

typedef struct {
    int Dia;
    int Mes;
    int Ano;
    }data;

typedef struct pessoa
{
    char Nome[100];
    int Numero;
    char Curso[50];
    float Classificacao;
    data Nasc;
}pessoa;

void Validar(struct data) {
     int Dia;
     int Mes;
     int Ano;
     if(Dia=1 || Dia<=31 && Mes=1 || Mes<=12 && Ano>=1950) {
            if((mes == 1) || (mes == 3) || (mes == 5) || (mes == 5) || (mes == 7) || (mes == 8) || (mes == 10) || (mes == 12))
                printf("mes de 31 dias");
            else
                if(mes==2)
                    if(((ano % 4) == 0) && ((ano % 100) != 0) || ((an0 % 400) == 0))
                        printf("mes de 29 dias");
                    else
                        printf("mes de 28 dias");
                else
                    printf("mes de 30 dias");
                    }
                return 1;
    else {
    printf("Data inválida");
    return 0;
     
void Inserir(pessoa *ptr)
{
    printf("Qual o Nome        :\n");
    gets(ptr->Nome);
    printf("Qual o Numero      :\n");
    scanf("%d", &ptr->Numero);
    printf("Qual o curso       :\n");
    gets(ptr->Curso);
    printf("Qual a Classificacao:");
    scanf("%f", &ptr->Classificacao);
    printf("Qual a Data Nascim   :\n");
    scanf("%d %d %d",&ptr->Nasc.Dia, &ptr->Nasc.Mes, &ptr->Nasc.Ano);
}

void Mostrar(struct pessoa x)
{
     printf("Nome                    :%s\n",x.Nome);
     printf("Numero                  :%d\n",x.Numero);
     printf("Curso                   :%s\n",x.Curso);
     printf("Classificacao           :%s\n",x.Classificacao);

     printf("Data Nasc               :%d/%d/%d\n",x.Nasc.Dia,x.Nasc.Mes,x.Nasc.Ano);
}

Por favor ajude-me :(

Share this post


Link to post
Share on other sites
Localhost

Começa por corrigir o facto de não estares a aceder aos campos da estrutura que passas como argumento à função mas sim estares a aceder a 3 variáveis que declaraste no início da função e que contêm valores indefinidos dentro.


here since 2009

Share this post


Link to post
Share on other sites
bubulindo

Provavelmente não tens utilizado muito o fórum... mas coloca-te nos sapatos dos outros utilizadores.

Chegam aqui, deparam-se com uma linha a dizer que tens um problema a validar datas e outra a dizer ajudem-me, entre elas código... ora, como a maior parte dos utilizadores do fórum gosta de ajudar, mas tem mais que fazer, muito provavelmente não se darão ao trabalho de ler o código todo sem saber qual exactamente é o problema. O que é que tu fazias? Como podes ajudar alguém se não sabes qual é o problema que aflige a outra pessoa?

Já se tu tivesses dito qual era o problema específico que estás a ter, muito provavelmente haveria quem, sem olhar para o código completo te dissesse o que estava mal...

Assim, arriscas-te a não teres ajuda nenhuma ou muito pouca por não seres específico no que pretendes.

De repente, e sem me dar ao trabalho de compilar isto encontrei vários erros:

- A função validar está toda mal formatada com chavetas a faltar em vários ifs e também a última chaveta que fecha a função. Para ficar correcto, seria algo como:

void Validar(struct data) {
     int Dia;
     int Mes;
     int Ano;
     if(Dia==1 || Dia<=31 && Mes=1 || Mes<=12 && Ano>=1950) {
            if((mes == 1) || (mes == 3) || (mes == 5) || (mes == 5) || (mes == 7) || (mes ==  || (mes == 10) || (mes == 12))
                printf("mes de 31 dias");
            else
                {
                if(mes==2)
                    {
                    if(((ano % 4) == 0) && ((ano % 100) != 0) || ((an0 % 400) == 0))
                        printf("mes de 29 dias");
                    else
                        printf("mes de 28 dias");
                     }//fecho if mes ==2
                 else
                    printf("mes de 30 dias");
                 }//fecho do else mes ==1
                return 1;
    }//fecho do if Dia ==!
    else {
            printf("Data inválida");
            return 0;
            }
}//fim da função.

- No primeiro if da função validar, tu definias o valor dia "=" em vez de testares "==". Já está corrigido na função em cima.

- Definiste as variáveis Ano, Mes, Dia... em vários ifs utilizas as variáveis ano, mes, dia... o C é case sensitive, logo ou é uma ou outra.

- Falta-te a função main(), ou não a quiseste postar?


include <ai se te avio>

Mãe () {

}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.