Ir ao conteúdo
  • Cadastre-se

C Alguém poderia me ajudar a achar o erro nesse código em C?


Vinicius78

Posts recomendados

Pessoal, alguém poderia me ajudar a entender o por que de meu código estar dando esses erros, verifiquei e tenho quase certeza que fechei todos os parênteses.

 

main.c

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <locale.h>
#include "fila.h"
int main()
{
    srand(time(NULL));//FUNÇÂO PARA NÂO REPEtIR A FILA
    setlocale(LC_ALL, "Portuguese");//FUNÇÂO PARA ACEITAR OS CARACTERES DO PORTUGUES
    int opc=0, e;
    pilha *p = (pilha*) malloc(sizeof(pilha));
    fila  *f = (fila*)  malloc(sizeof (fila));
    creatfila(f);//CRIANDO FILA
    creatpilha(p);//CrIANDO ILHA
    //CHAMANDO MENUS DE OPÇÔES
    while(opc != 3)
    {
        system("cls");
        mostra(f, p);
        printf("\n----ESCOLHA A OPÇÂO DESEJADA----");
        printf("\n1-ENFILERA");
        printf("\n2-EMPILHA");
        printf("\n3-FINALIZAR");
        scanf("%d",&opc);
        switch (opc){
            case 1:{//ENFILEIRANDO
                e = rand() % 1000; //DEFININDO UM NUMERO ALEATORIO PARA FILA
                printf("\n|%d|",e);
                enfilera(f, e);
                system("pause");
                break;
            }
            case 2:{//EMPILHANDO
                if(f->ini == NULL)//CASO NÂO HAJA NENHUM VALOR NA FIlA
                {
                    printf("\nPOR VAFOR INSIRA UM VALOR A FILA PARA DEPOIS EMPILHAR");
                }
                else{
                    e = desenfilera(f);
                    printf("\nO valor |%d| será adicionado a pilha\n",e);
                    system("pause");
                    empilha(p,e);
                }
                break;
            }
            case 3:{//ENCERRANDO
                opc =3;
                printf("\nENCERRANDO");
                break;
            }
        }
    }
    printf("\n");
    return 0;
}

fila.h

#ifndef FILA_H_INCLUDED
#define FILA_H_INCLUDED
//DEFININDO PILHA
typedef struct Tpilha{
    int item;
    struct Tpilha *ant;
}Tpilha;
typedef struct pilha{
    Tpilha *topo;
}pilha;
//DEFININDO FILA
typedef struct Tfila{
    int dado;
    struct Tfila *prox;
}Tfila;
typedef struct fila{
    Tfila *ini;
    Tfila *fim;
}fila;
//FUNÇÔES PARA LIDAR COM A PILHA
void creatpilha(pilha *p);
int pilha_vazia(pilha *p);
void empilha (pilha *p,int e);
//FUNÇÔES PARA LIDAR COM A FILA
int fila_vazia(fila *f);
void creatfila(fila *f);
void enfilera (fila *f, int e);
int desenfilera (fila *f);
void mostra(fila *f, pilha *p)


#endif // FILA_H_INCLUDED

fila.c

#include <stdio.h>
#include <stdlib.h>
#include "fila.h"
//INICIALIZANDO PILHA COM NULL
void creatpilha(pilha *p)
{
    p->topo=NULL;
}
//INICIALIZANDO FILA COM NULL
void creatfila(fila *f)
{
    f->ini = NULL;
    f->fim = NULL;
}
//VERIFICANDO SE A PILHA ESTÀ VAZIA
int pilha_vazia(pilha *p)
{
    if(p->topo == NULL)
        return 1;
    else
        return 0;
}



//VERIFICANDO SE A FILA ESTÀ VAZIA
int fila_vazia(fila *f)
{
    if(f->ini == NULL)
        return 1;
    else
        return 0;
}
//EMPILHANDO VAOR DA FILA
void empilha (pilha *p,int e)
{
    Tpilha *novo = (Tpilha*) malloc(sizeof(Tpilha));
    novo->ant = p->topo;
    novo->item = e;
    p->topo =novo;

}
//ENFILEIRANDO VALOR ALEATORIO
void enfilera (fila *f, int e)
{
    Tfila *novo = (Tfila*) malloc(sizeof(Tfila));
    novo->dado = e;
    novo->prox = NULL;
    if(fila_vazia(f) == 1)
    {
        f->ini = novo;
        f->fim= novo;
    }
    else{
        f->fim->prox = novo;
        f->fim= novo;

    }
}
//DESENFILEIRANDO PARA JOGAR NA PILHA
int desenfilera(fila f)
{
    int valor;
    Tfila *aux = (Tfila*) malloc(sizeof(Tfila));
    aux = f->ini;
    valor = aux->dado;
    f->ini= aux->prox;
    aux->prox=NULL;
    if(f->ini==NULL)
    {
        f->fim = NULL;
        free(aux);
    }
    else
        free(aux);

    return valor;

}
//MOSTRANDO A FILA E A PILHA
void mostra(fila *f, pilha *p)
{
   //FILA
       printf("\n");
       Tfila *aux = (Tfila*)malloc(sizeof(Tfila));
       aux = f->ini;
       while(aux != NULL)
       {
          printf("| %d ",aux->dado);
          aux=aux->prox;
       }

    //PILHA
        printf("\n");
        Tpilha *auxp=(Tpilha*)malloc(sizeof(Tpilha));
        auxp=p->topo;
        while(auxp!=NULL){
            printf("%d \n",auxp->item);
            auxp=auxp->ant;
        }

}

main.c e fila.c estão na pasta sources  e o arquivo fila.h esta na pasta  headhers

Link para o comentário
Compartilhar em outros sites

void creatfila(fila* f);
void enfilera(fila* f, int e);
int desenfilera(fila* f);
void mostra(fila* f, pilha* p)


#endif // FILA_H_INCLUDED


Olá

 

Pois é, dentro de um #ifdef que tem um #define dentro tem um comando que NÃO termina por ; 

 

E o resto é história. Coloque isso e continue. Poste o código de novo. Seu programa não está bom ainda :( e vai ter um trabalho danado seguindo por esse caminho.

 

sugiro

  • evitar void como a peste (ou o CV-19). 
  • entenda que conio.h é dos anos '80 derivada de algo mais antigo ainda. Não é possível que ainda se precise disso depois de 40 anos.
  • uma estrutura de dados é um container. Use como tal. Uma pilha tem nós, uma fila tem nós. São os nós que tem os dados. Os dados tem uma chave. A pilha não é o nó. O nó não é a pilha. Os dados não são o nó...
  •  

 

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!