Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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.

Editado por NomeUnderground
Copiei errado

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






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

×