Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Douglas O. Otto

Erro na compilação do código

Recommended Posts

Boa tarde pessoal. poderiam me ajudar sobre meu problema.

Está dando estes 2 erros no meu código, podem me ajudar explicando o porque!?

 

[Error] cannot convert 'info {aka computadores}' to 'info* {aka computadores*}' for argument '1' to 'void pesquisar(info*)'

[Error] cannot convert 'info {aka computadores}' to 'info* {aka computadores*}' for argument '1' to 'info* remover(info*)'

 

 

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

typedef struct computadores{//Criacao da struct
     char nome[15];
    int sala,ano;
    struct computadores *antes, *depois;
} info;

info *inserir(info*inicial){//inserir

    info *novo=NULL, *i=inicial;
    int s, a;
    char no[15];

    printf("     **Novo Computador!**\n");
    printf("\n\n");
    printf("Nome: ");
    gets(no);
    printf("Sala: ");
    scanf("%d",&s);
    printf("Ano: ");
    scanf("%d",&a);
    
    if(i==NULL){/*testa se a lista esta vazia*/

         i = (info *) malloc(sizeof(info));
     
         if(i==NULL)
             printf("Nao foi possivel realizar a operacao !\n\n");
         else{
                 strcpy(i->nome,no);
              i->sala = s;
              i->ano = a;
              i->depois = NULL;
              i->antes=NULL;
              return(i);
        }
    }else{
         novo=(info*)malloc(sizeof(info));
         
         if(novo==NULL)
         
             printf("Nao foi possivel realizar a operacao !\n\n");
             
         else{
             strcpy(novo->nome,no);
             novo->sala = s;
             novo->ano = a;
             novo->depois=i;
             novo->antes=NULL;
             i->antes=novo;
             return(novo);
         }
    }
}

void listar(info *inicial){
    
    info *i=inicial;
    
    if(i==NULL)
        printf("**Lista Vazia !**\n\n");
    else{
         printf("  **IMPRESSAO DA LISTA**\n");
         
         while(i!=NULL){
              printf("Nome:%s\n",i->nome);
              printf("Sala:%d\n",i->sala);
              printf("Ano:%d\n\n",i->ano);
              i=i->depois;/*p passa a apontar para o proximo elemento*/
         }
    }
}

void pesquisar(info *inicial){
    
    char no[15];
    info *i=inicial;
    
    if(i==NULL)
        printf("**Lista Vazia !**\n\n");
    else{
         printf("Pesquise por nome:\n");
         scanf("%s",&no);
         fflush(stdin);
         
         while((i!=NULL)&&strcpy(i->nome,no)!=0){
         
             i=i->depois;
             
             if(i==NULL)/*verifica se nao encontrou o codigo na lista */
                 printf("**Computador nao cadastrado !**\n\n");
             else{
                 printf("Computador encontrado");
             }
        }
    }
}

info *remover(info *inicial){
    
    info *aux=NULL;
    info *i=inicial;
    char no[15];
    
    if(i==NULL)
        printf("**Lista Vazia !**\n\n");
    else{
         printf("Computador que deseja remover:\n");
         scanf("%s",&no);
         
         while((i!=NULL)&&strcpy(i->nome,no)!=0){
 
              aux=i;/*anterior sempre aponta para o anterior elemento da lista */
              i=i->depois;/*p aponta para o proximo elemento da lista*/
         }
         if(i==NULL)
             printf("**Computador nao encontrado !**\n\n");
         else{
            printf("**Posicao Removida !**\n\n");
            
         if(aux==NULL){/*verifica se e o 1ºelemento da lista que sera eliminado*/
     
              if(i->depois==NULL)
                  inicial=NULL;
              else{                            
                  inicial=i->depois;
                  inicial->antes=NULL;
              }
          }else{
             aux->depois=i->depois;
             
             if(aux->depois!=NULL)
                   aux->depois->antes=aux;
         }
     
         free(i);
     }
}
return(inicial);
}


int main(){

    info *inicial=NULL;
    char op;
    
    do{        
        printf("*******************************************************\n");
        printf("*                                                     *\n");
        printf("*             Universidade Luterana do Brasil         *\n");
        printf("*                         ULBRA                       *\n");
        printf("*                                                     *\n");
        printf("*                      ---Menu---                     *\n");
        printf("*                                                     *\n");
        printf("*    1 - Insira um computador                         *\n");
        printf("*    2 - Liste todos os computadores                  *\n");
        printf("*    3 - Pesquise um computador                       *\n");
        printf("*    4 - Remova um computador                         *\n");
        printf("*    5 - Sair                                         *\n");
        printf("*                                                     *\n");
        printf("*******************************************************\n");
        scanf("%d",op);
        system("cls");
    
        switch(op){/*chamada das respectivas funcoes*/
               case 1:
                   inicial=inserir(inicial);
            break;
            
              case 2:
                info(inicial);
            break;
            
               case 3:
                   pesquisar(inicial);
            break;
            
               case 4:
                   inicial=remover(inicial);
            break;
            
               case 5:
                   printf("Sair");
            break;
            
               default :
                   printf("Opcao Invalida!\n\n");
                   printf("\a");
               break;
          }
      
        fflush(stdin);             
      }while(op != 5);
             
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara boa tarde. O que ocorre ai, é que você passa um ponteiro (que é a maneira correta de se invocar um struct), porém, com um info que não está declarada. Tente declará-la la em cima como variável global e depois me fala aqui o que ocorreu. Tipo: typedef info varinfo; 

Ai la embaixo você pega varinfo, que contém a referência pra struct. Faça isso. Abss !

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, fabregasf_CEC disse:

Cara boa tarde. O que ocorre ai, é que você passa um ponteiro (que é a maneira correta de se invocar um struct), porém, com um info que não está declarada. Tente declará-la la em cima como variável global e depois me fala aqui o que ocorreu. Tipo: typedef info varinfo; 

Ai la embaixo você pega varinfo, que contém a referência pra struct. Faça isso. Abss !

Desculpa amigo, mas não entendi o que tu quis dizer no final. Sou iniciante em programação, aí se pudesse ajudar na alteração ficaria grato.

adicionado 13 minutos depois

Amigo, fiz um código diferente aqui e funcionou.

 

Mas obrigado pelo retorno.

 

Corrigindo, não funcionou, depois que encerrei e abri a aplicação novamente, o mesmo parou de funcionar e não entendi o porque.

Se puder me ajudar no código acima agradeço.

Editado por Douglas O. Otto

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
Entre para seguir isso  





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

×