Ir ao conteúdo

Posts recomendados

Postado

Quero criar uma função pra concatenar duas filas mas está aparecendo o erro citado no titulo e problemas no ponteiro, como resolver?

 

Eis o codigo:

 

typedef struct no{
    int dados;
    struct no *prox;
} NO;

typedef struct{
    NO *ini;
    NO *fim;
    struct no *prox;
}FILA; 

 

int fila_vazia(FILA *f){
    if(f==NULL || f->ini==NULL) return 1;
    return 0;
}


FILA* cria_fila(){ 
    FILA *fi = (FILA*) malloc(sizeof(FILA));
    if(fi != NULL){
        fi->fim = NULL;  
        fi->ini = NULL;
    }
    return fi;
}

 

int concatenarfila(FILA *fi, FILA *fi2, FILA *fi3){

    if(fila_vazia(fi) && fila_vazia(fi2)){
        return 0;
    }else{      
        int x;
        fi3 = cria_fila();
        for(x=fi->ini; x<=fi->fim; x++){
            enfileira(fi3, fi.prox[x]);            
        for(x=fi2.ini; x<=fi2.fim; x++){
            enfileira(fi3, fi2.prox[x]);                
        return 1;
        }
    }

}

  • Obrigado 1
Postado

@KXSY Dev-C++ , ai no caso é o arquivo em .h para implementar a função, o .cpp está assim:  

 

Codigo :

 

#include "filaenc.h"

FILA *fi; 
FILA *fi2;

int main(){
    PACIENTE p;
    
    fi = cria_fila();
    fi2 = cria_fila();
  
    int i=0,num;

    printf ("Digite a quantidade de pacientes\n");
    scanf ("%d", &num);

    while(i<num){
        
    printf("\nDigite a idade, nome, sexo do paciente e informe se eh gravida - (0/1)\n");
    scanf("%d",&p.idade);
    scanf("%s",&p.nome);
    scanf("%s",&p.sexo);
    scanf("%i",&p.gravida);
    
    if(p.idade > 60 || p.gravida == 1){
    printf("\nFila1\n");    
    enfileira(fi, p);

    } else {
    printf("\nFila2\n");        
    enfileira(fi2, p);
        
    }
    
    i++;
}
    printf("Fila1\n \n");
    imprime_fila(fi);
    printf("Fila2\n \n");
    imprime_fila(fi2);    
    
    printf("Fila Geral \n");
    
   // concatenar_fila(fi2,fi);
  //  imprime_fila(fi2);
    
    return 0;
}

 

 

Essa parte abaixo em forma de comentário faz parte do .h , não havia colocado 

/*

typedef struct{
    char nome[150];
    int idade;
    char sexo;
    short gravida;
} PACIENTE;

 

void imprime_fila(FILA *f){
    if(fila_vazia(f)) printf("FILA VAZIA! ");
    NO *aux = f->ini;
    printf("INI <=|");
    while (aux!=NULL){
        printf("%s, %d anos, %s, %s|", aux->dados.nome, aux->dados.idade, (aux->dados.sexo=='F'?"Fem.":"Masc."), (aux->dados.gravida?"GEST":"NAO GEST"));
        aux=aux->prox;
    }
    printf("<= FIM\n");
}

*/

1 minuto atrás, Barry Stinson disse:

@KXSY Dev-C++ , ai no caso é o arquivo em .h para implementar a função, o .cpp está assim:  

(obs: sou bem iniciante em C)

Codigo :

 

#include "filaenc.h"

FILA *fi; 
FILA *fi2;

int main(){
    PACIENTE p;
    
    fi = cria_fila();
    fi2 = cria_fila();
  
    int i=0,num;

    printf ("Digite a quantidade de pacientes\n");
    scanf ("%d", &num);

    while(i<num){
        
    printf("\nDigite a idade, nome, sexo do paciente e informe se eh gravida - (0/1)\n");
    scanf("%d",&p.idade);
    scanf("%s",&p.nome);
    scanf("%s",&p.sexo);
    scanf("%i",&p.gravida);
    
    if(p.idade > 60 || p.gravida == 1){
    printf("\nFila1\n");    
    enfileira(fi, p);

    } else {
    printf("\nFila2\n");        
    enfileira(fi2, p);
        
    }
    
    i++;
}
    printf("Fila1\n \n");
    imprime_fila(fi);
    printf("Fila2\n \n");
    imprime_fila(fi2);    
    
    printf("Fila Geral \n");
    
   // concatenar_fila(fi2,fi);
  //  imprime_fila(fi2);
    
    return 0;
}

 

 

Essa parte abaixo em forma de comentário faz parte do .h , não havia colocado 

/*

typedef struct{
    char nome[150];
    int idade;
    char sexo;
    short gravida;
} PACIENTE;

 

void imprime_fila(FILA *f){
    if(fila_vazia(f)) printf("FILA VAZIA! ");
    NO *aux = f->ini;
    printf("INI <=|");
    while (aux!=NULL){
        printf("%s, %d anos, %s, %s|", aux->dados.nome, aux->dados.idade, (aux->dados.sexo=='F'?"Fem.":"Masc."), (aux->dados.gravida?"GEST":"NAO GEST"));
        aux=aux->prox;
    }
    printf("<= FIM\n");
}

*/

 

  • Curtir 1
Postado
44 minutos atrás, Barry Stinson disse:

Dev-C++

 

Bom, Dev-C++ não é um compilador, é apenas um editor de texto. Você deve saber qual o compilador ele usa pra compilar seus códigos.

 

Talvez o erro esteja aqui:

 

1 hora atrás, Barry Stinson disse:

for(x=fi->ini; x<=fi->fim; x++)

 

Veja, x é um int e fi->fim é um ponteiro do tipo NO, logo você não pode fazer comparações x<=fi->fim. Seria como comparar uma maçã e uma pera, não faz sentido.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!