Ir ao conteúdo
  • Cadastre-se
jayberti

C Erro ao compilar programa em c

Recommended Posts

#include<time.h>

struct data
{
    char dia;
    char mes;
    short ano;
};
typedef struct data TData;

int e_bissexto(int ano)
{
    return (ano%4==0 && ano%100 != 0) || ano%400 == 0;
}

TData gere_data()
{
    TData d;
    int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
//   d.ano = 2016+rand()%2;
    d.ano = 2017;
    if(e_bissexto(d.ano))
        ndm[2] = 29;
//    if(d.ano == 2016)
//        d.mes = 1+rand()%12;
//    else
//        d.mes = 1+rand()%10;
    d.mes = 11 + rand()%2;
    d.dia = 1 + rand()%ndm[(int) d.mes];
    return d;
}

void mostre_data(TData a)
{
    printf("%02d/%02d/%d", a.dia, a.mes, a.ano);
}

void mostre_data_ext(TData d)
{
    char nm[13][10] = {"","janeiro","fevereiro","mar\x87o",
                 "abril","maio","junho","julho","agosto",
                 "setembro","outubro","novembro","dezembro"};
    printf("%02d de %s de %d", d.dia, nm[(int)d.mes], d.ano);
}

TData passa_um_dia(TData d)
{
    int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(e_bissexto(d.ano))
        ndm[2] = 29;
    d.dia++;
    if(d.dia > ndm[(int)d.mes])
    {
        d.dia = 1;
        d.mes++;
        if(d.mes > 12)
        {
            d.mes = 1;
            d.ano++;
        }
    }
    return d;
}

void passa_um_dia_ref(TData *d)
{
    int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(e_bissexto(d->ano))
        ndm[2] = 29;
    d->dia++;
    if(d->dia > ndm[(int)d->mes])
    {
        d->dia = 1;
        d->mes++;
        if(d->mes > 12)
        {
            d->mes = 1;
            d->ano++;
        }
    }
}

int cmp_data(const void *a, const void *b)
{
    TData *da = (TData *) a;
    TData *db = (TData *) b;

    if(da->ano != db->ano)
        return da->ano - db->ano;
    else
        if(da->mes != db->mes)
            return da->mes - db->mes;
        else
            return da->dia - db->dia;
}

TData le_data()
{
    TData res;
    int d, m , a;
    scanf("%d/%d/%d", &d, &m, &a);
    res.dia = d;
    res.mes = m;
    res.ano = a;
    return res;
}

TData dat_sis()
{
    TData res;
    time_t tempo = time(NULL);
    struct tm data = *localtime(&tempo);
    res.dia = data.tm_mday;
    res.mes = data.tm_mon+1;
    res.ano = data.tm_year+1900;
    return res;
}

unsigned desde_1_1_1990(TData dat)
{
    int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(e_bissexto(dat.ano))
        ndm[2] = 29;
    unsigned res = 0;
    short ano = 1900;
    char mes = 1;
    while(ano < dat.ano)
    {
        if (e_bissexto(ano))
            res += 366;
        else
            res += 365;
        ano++;
    }
    while(mes < dat.mes)
    {
        res += ndm[(int) mes];
        mes++;
    }
    return res + dat.dia;
}

int dia_semana(TData dat)
{
    return desde_1_1_1990(dat) % 7;
}

void dia_sem_ext(TData dat)
{
    char dse[7][16] = {"domingo","segunda-feira","ter\x87 \ba-feira","quarta-feira","quinta-feira","sexta-feira","s\xa0 \bbado"};
    printf("%s", dse[dia_semana(dat)]);
}


Está apresentando um erro nas partes que comentei com // e não consigo resolver. Por favor, alguém me ajude!!!!

O main.exe ta normal, mas na hora de compilar fica aparecendo esse erro de expected expression before "/"

 

 

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual erro? Não tem a main para testar. aqui compilou certo mesmo sem os comentários

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consertei os erros, na verdade você esqueceu de colocar as aspas, para os meses e dias da semana. Também colocou vários printf sem colocar as aspas entre %s.

Não use

printf(%s, ....)

Use:

printf("s%", ....);

E você estava declarando strings sem colocar as aspas nela, aí quando isso acontece, ele vai buscar uma variável com o nome da string, ao invés de declarar a string com o nome colocado.

Agora só falta colocar o main()

#include<time.h>

struct data
{
    char dia;
    char mes;
    short ano;
};
typedef struct data TData;

int e_bissexto(int ano)
{
    return (ano%4==0 && ano%100 != 0) || ano%400 == 0;
}

TData gere_data()
{
    TData d;
    int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
//   d.ano = 2016+rand()%2;
    d.ano = 2017;
    if(e_bissexto(d.ano))
        ndm[2] = 29;
//    if(d.ano == 2016)
//        d.mes = 1+rand()%12;
//    else
//        d.mes = 1+rand()%10;
    d.mes = 11 + rand()%2;
    d.dia = 1 + rand()%ndm[(int) d.mes];
    return d;
}

void mostre_data(TData a)
{
    printf("%02d/%02d/%d", a.dia, a.mes, a.ano);
}

void mostre_data_ext(TData d)
{
    char nm[13][10] = {"janeiro","fevereiro","marx87o",
                 "abril","maio","junho","julho","agosto",
                 "setembro","outubro","novembro","dezembro"};
    printf("%02d de %s de %d", d.dia, nm[(int)d.mes], d.ano);
}

TData passa_um_dia(TData d)
{
    int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(e_bissexto(d.ano))
        ndm[2] = 29;
    d.dia++;
    if(d.dia > ndm[(int)d.mes])
    {
        d.dia = 1;
        d.mes++;
        if(d.mes > 12)
        {
            d.mes = 1;
            d.ano++;
        }
    }
    return d;
}

void passa_um_dia_ref(TData *d)
{
    int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(e_bissexto(d->ano))
        ndm[2] = 29;
    d->dia++;
    if(d->dia > ndm[(int)d->mes])
    {
        d->dia = 1;
        d->mes++;
        if(d->mes > 12)
        {
            d->mes = 1;
            d->ano++;
        }
    }
}

int cmp_data(const void *a, const void *b)
{
    TData *da = (TData *) a;
    TData *db = (TData *) b;

    if(da->ano != db->ano)
        return da->ano - db->ano;
    else
        if(da->mes != db->mes)
            return da->mes - db->mes;
        else
            return da->dia - db->dia;
}

TData le_data()
{
    TData res;
    int d, m , a;
    scanf("%d/%d/%d", &d, &m, &a);
    res.dia = d;
    res.mes = m;
    res.ano = a;
    return res;
}

TData dat_sis()
{
    TData res;
    time_t tempo = time(NULL);
    struct tm data = *localtime(&tempo);
    res.dia = data.tm_mday;
    res.mes = data.tm_mon+1;
    res.ano = data.tm_year+1900;
    return res;
}

unsigned desde_1_1_1990(TData dat)
{
    int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(e_bissexto(dat.ano))
        ndm[2] = 29;
    unsigned res = 0;
    short ano = 1900;
    char mes = 1;
    while(ano < dat.ano)
    {
        if (e_bissexto(ano))
            res += 366;
        else
            res += 365;
        ano++;
    }
    while(mes < dat.mes)
    {
        res += ndm[(int) mes];
        mes++;
    }
    return res + dat.dia;
}

int dia_semana(TData dat)
{
    return desde_1_1_1990(dat) % 7;
}

void dia_sem_ext(TData dat)
{
    char dse[7][16] = {"domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"};
    printf("%s", dse[dia_semana(dat)]);
}

Na verdade está ok, só depois que vi, que quando copiei foi sem os parênteses, mas só falta o main.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×