Ir ao conteúdo
  • Cadastre-se

guhbrj

Membro Pleno
  • Posts

    54
  • Cadastrado em

  • Última visita

Tudo que guhbrj postou

  1. Obrigado, gente, pela ajuda. Uso o Dev++ e, aqui no meu compilador, está exibindo esse erro: 352 26 G:\conversaoPCS.c [Error] dereferencing pointer to incomplete type conforme na imagem
  2. #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<string.h> typedef struct computador{ int mp; int mc; int cbloco; int bcelula; int lconjunto; int bloco; int numero; }pc; typedef struct pclista{ int numpc; struct pclista *prox; struct pc *maquina; }lista; lista* novo(lista *inicio); int calc_Mp(int mprincipal, int tam, int cont); int calc_Mc(int mcache, int tam, int cont); int calc_celula_bloco(int celbloc, int tam, int cont); int calc_byte_celula(int bcel, int tam, int cont); int calc_linha_conjunto(int linhaconj,int tam,int cont); void exibir(lista *inicio); void buscar(lista *inicio); int main() { lista *inicio; inicio = NULL; char opcao; do { system("CLS"); printf("--------------MENU----------------\n"); printf("| |\n"); printf("| Novo computador [n] |\n"); printf("| Editar computador [e] |\n"); printf("| Ver informações [i] | \n"); printf("| Apagar computador [a] |\n"); printf("| Exibir lista [l] |\n"); printf("| Sair do programa [s] |\n"); printf("| |\n"); printf("----------------------------------\n"); printf("\nEntre com uma opcao: "); scanf("%c", &opcao); fflush(stdin); switch(opcao) { default : printf("\nOpcao invalida"); Sleep(1000); break; case 'n': inicio = novo(inicio); break; case 'l': exibir(inicio); break; case 'i': buscar(inicio); break; } }while(opcao!='s'); } lista* novo(lista *inicio) { lista *auxLista; pc *auxPc; int numpc=1, tam=1, cont=0, numerador = 0; int cb, bc, lj, mprincipal, mcache, celbloc, bcel, linhaconj, bloc, ram , cache, aux; char umMp[3], umMc[3]; system("CLS"); printf("Entre com o tamanho da Memoria princial\nEx.: 8 Gb\nDigite: "); scanf("%d %s", &mprincipal, &umMp); fflush(stdin); printf("Entre com o tamanho da Memoria cache\nEx:. 2 Mb\nDigite: "); scanf("%d %s", &mcache, &umMc); fflush(stdin); printf("Entre com quantidade de celulas por bloco: "); scanf("%d", &celbloc); fflush(stdin); printf("Entre com quantidade de byte por celula: "); scanf("%d", &bcel); fflush(stdin); printf("Entre com a quantidade de linhas por conjunto: "); scanf("%d", &linhaconj); fflush(stdin); if((strcmp(umMp, "K")==0)||(strcmp(umMp, "k")==0)) { ram = 0; } if((strcmp(umMp, "kb")==0)||(strcmp(umMp, "Kb")==0)||(strcmp(umMp, "kB")==0)||(strcmp(umMp, "KB")==0)) { ram = 10; } if((strcmp(umMp, "mb")==0)||(strcmp(umMp, "Mb")==0)||(strcmp(umMp, "mB")==0)||(strcmp(umMp, "MB")==0)) { ram = 20; } if((strcmp(umMp, "gb")==0)||(strcmp(umMp, "Gb")==0)||(strcmp(umMp, "gB")==0)||(strcmp(umMp, "GB")==0)) { ram = 30; } if((strcmp(umMp, "tb")==0)||(strcmp(umMp, "Tb")==0)||(strcmp(umMp, "tB")==0)||(strcmp(umMp, "TB")==0)) { ram = 40; } //--------------------------------------------------------------------------cache---------------------------------------- if((strcmp(umMc, "K")==0)||(strcmp(umMc, "k")==0)) { cache = 0; } if((strcmp(umMc, "kb")==0)||(strcmp(umMc, "Kb")==0)||(strcmp(umMc, "kB")==0)||(strcmp(umMc, "KB")==0)) { cache = 10; } if((strcmp(umMc, "mb")==0)||(strcmp(umMc, "Mb")==0)||(strcmp(umMc, "mB")==0)||(strcmp(umMc, "MB")==0)) { cache = 20; } if((strcmp(umMc, "gb")==0)||(strcmp(umMc, "Gb")==0)||(strcmp(umMc, "gB")==0)||(strcmp(umMc, "GB")==0)) { cache = 30; } if((strcmp(umMc, "tb")==0)||(strcmp(umMc, "Tb")==0)||(strcmp(umMc, "tB")==0)||(strcmp(umMc, "TB")==0)) { cache = 40; } cb=calc_celula_bloco(celbloc, tam, cont); bc=calc_byte_celula(bcel, tam, cont); lj=calc_linha_conjunto(linhaconj, tam, cont); ram+=calc_Mp(mprincipal, tam, cont); cache+=calc_Mc(mcache, tam, cont); aux = ram; aux-=celbloc; aux-=bcel; bloc=aux; // < -- valor do bloco printf("\nCelula/bloco -> %d = 2^ %d", celbloc, cb); printf("\nByte/celula -> %d = 2^ %d", bcel, bc); printf("\nLinha/conjunto -> %d = 2^ %d", linhaconj, lj); printf("\nMemoria RAM -> %d %s = 2^ %d",mprincipal, umMp, ram); printf("\nMemoria Cache -> %d %s = 2^ %d",mcache, umMc, cache); printf("\nBloco (assoc) -> %d\n\n", bloc); system("PAUSE"); numerador ++; //inserindo computador na lista auxPc=malloc(sizeof(pc)); auxLista=malloc(sizeof(lista)); auxLista->maquina = auxPc; // <- salvei na lista o endereco onde a maquina esta auxPc->bcelula = bc; auxPc->bloco = bloc; auxPc->cbloco = bc; auxPc->lconjunto = lj; auxPc->mc = cache; auxPc->mp = ram; printf("entre com um numero para o computador: "); scanf("%d", &numerador); auxPc->numero = numerador; auxLista->numpc = numerador; auxLista->prox = inicio; return(auxLista); } int calc_celula_bloco(int celbloc, int tam, int cont) { if(celbloc>tam) { return calc_Mp(celbloc, tam+tam, cont+1); } else { return cont; } } int calc_byte_celula(int bcel, int tam, int cont) { if(bcel>tam) { return calc_Mp(bcel, tam+tam, cont+1); } else { return cont; } } int calc_linha_conjunto(int linhaconj,int tam,int cont) { if(linhaconj>tam) { return calc_Mp(linhaconj, tam+tam, cont+1); } else { return cont; } } int calc_Mp(int mprincipal, int tam, int cont) { if(mprincipal>tam) { return calc_Mp(mprincipal, tam+tam, cont+1); } else { return cont; } } calc_Mc(int mcache, int tam, int cont) { if(mcache>tam) { return calc_Mp(mcache, tam+tam, cont+1); } else { return cont; } } void exibir(lista *inicio) { system("CLS"); printf("Lista de computadores:\n\n\n "); if(inicio==NULL) { printf("\nNada a listar"); Sleep(1000); } else { while(inicio!=NULL) { printf("\nComputador %d ", inicio->numpc); inicio = inicio->prox; } printf("\n"); system("PAUSE"); } } void buscar(lista *inicio) { int n; int sair=0, tag, indice; system("CLS"); printf("Entre com o numero do computador: "); scanf("%d", &n); fflush(stdin); if(inicio==NULL) { printf("\nNao ha computador cadastrado."); Sleep(1500); } else { while((inicio!=NULL)&&(sair==0)) { if(inicio->numpc==n) { printf("Achei a maquina!\n"); tag = inicio->maquina->mp-inicio->maquina->mc; indice = inicio->maquina->bloco-tag; sair=1; system("PAUSE"); } else { inicio=inicio->prox; } } } } adicionado 2 minutos depois esse é o trecho problemático.
  3. Galera, boa noite ! Sou novato aqui. Saudações a todos . Estou tentando acessar dados dentro de uma struct através de um ponteiro dentro de outra. Confuso, não ? Abaixo segue código para análise. // declaração das structs typedef struct computador{ int mp; int mc; int cbloco; int bcelula; int lconjunto; int bloco; int numero; }pc; typedef struct pclista{ // lista encadeada int numpc; struct pclista *prox; struct pc *maquina; }lista; ... na main tenho a declaração de um ponteiro do tipo lista que serve como nó cabeça para acessar a lista. lista *inicio; inicio = NULL; ... insiro os dados do PC e, para exibir, tenho uma função que busca o pc: void buscar(lista *inicio) { int n; int sair=0, tag, indice; system("CLS"); printf("Entre com o numero do computador: "); scanf("%d", &n); fflush(stdin); if(inicio==NULL) { printf("\nNao ha computador cadastrado."); Sleep(1500); } else { while((inicio!=NULL)&&(sair==0)) { if(inicio->numpc==n) { printf("Achei a maquina!\n"); tag = inicio->maquina->mp-inicio->maquina->mc; /* <---- nesta linha o DEV apresenta a seguinte mensagem de erro: 352 46 J:\conversaoPCS.c [Error] dereferencing pointer to incomplete type */ sair=1; system("PAUSE"); } else { inicio=inicio->prox; } } alguém saberia como ajudar ? Agradeço a todos!!!

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!