Ir ao conteúdo
  • Cadastre-se

Yuri Carvalhgo

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

2
  1. @giu_d Cara, funcionou perfeitamente aqui, MUITO OBRIGADO! A questão do ajuste na função buscar pode deixar comigo, obrigado mesmo! Vou estudar meus erros agora
  2. @giu_d Aqui está o código inteiro, mesmo substituindo continuo com outro erro veja só //Yuri Carvalho #include<stdio.h> #include<stdlib.h> #define MAX 5 struct cad { int mat; char nome[30]; float sal; }; struct lista { int fim; struct cad memo[MAX]; }; typedef struct lista lista; int main() { lista l; struct cad x; int opc, pos; l.fim = -1; do { opc = menu(); switch(opc) { case 1: //enfileirar if(l.fim==MAX-1) { printf("Lista Cheia "); } else { printf("Matricula = "); scanf("%d", &x.mat); printf("Nome = "); fflush(stdin); gets(x.nome); printf("Salario = "); scanf("%f", &x.sal); inserir(&l, x); } break; case 2: //remover if(l.fim==-1) printf("Lista vazia "); else { x = remover(l); printf("\n matricula = %d", x.mat); printf("\n nome = %s", x.nome); printf("\n salario = %f", x.sal); } break; case 3: //busca if(l.fim == -1) printf("Lista vazia "); else { printf("Entre com a matricula que deseja procurar "); scanf("%d", &x); pos = buscabin(l,x); if(pos == -1) printf("Matricula nao encontrada "); else { printf("\n Matricula encontrada na posicao %d", &pos); } } break; default: printf("Opcao invalida "); } } while(opc!=8); } void inserir (lista *l, struct cad x) { l.final++; l->memo[l->final] = x; } struct cad remover(lista *l) { int i; struct cad aux; aux = l->memo[0]; for(i=0;i<l->final; i++) { l->memo[i] = l->memo[i+1]; } l->final--; return aux; } int buscabin(lista l, int mat) { int ini, fim, meio; ini = 0; fim = l.final; while(ini<=fim) { meio = (ini+fim)/2; if(mat = l.memo[meio].mat); return meio; if(mat<l.memo[meio].mat); fim = meio - 1; else { ini = meio + 1; } } return -1; } int menu() { int opc; printf("\n 1- Inserir "); printf("\n 2- Remover "); printf("\n 3- Busca "); printf("\n 8 - Sair"); printf("\n OPC = "); scanf("%d", &opc); return opc; }
  3. Estou trabalhando em um código de lista de estruturas, onde tenho uma struct chamada cad que contém os campos matrícula, nome e salário. E uma lista contendo um campo do tipo struct cad que guarda os campos da struct cad em forma de lista. Portanto o código fica assim: #define MAX 5 struct cad { int mat; char nome[30]; float sal; }; struct lista { int fim; struct cad memo[MAX]; }; typedef struct lista lista; typedef struct cad cad; int main() { lista l; cad x; int opc, pos; l.fim = -1; do { opc = menu(); switch(opc) { case 1: //enfileirar if(l.fim==MAX-1) { printf("Lista Cheia "); } else { printf("Matricula = "); scanf("%d", &x.mat); printf("Nome = "); fflush(stdin); gets(x.nome); printf("Salario = "); scanf("%f", &x.sal); inserir(&l, x); } break; case 2: //remover if(l.fim==-1) { printf("Lista vazia "); } else { x=remover(&l); printf("\n matricula = %d", x.mat); printf("\n nome = %s", x.nome); printf("\n salario = %f", x.sal); } break; Porém ao criar uma função capaz de remover as informações em uma das posições de struct cad memo, me ocorre o erro de "incompatible types when assigning to type 'cad' from type 'int'|" A função de remover ficou assim: struct cad remover(lista *l) { int i; struct cad aux; aux = l->memo[0]; for(i=0;i<l->fim; i++) { l->memo[i] = l->memo[i+1]; } l->fim--; return aux; } Alguém poderia me esclarecer o porque desse erro?

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