Ir ao conteúdo
  • Cadastre-se

Danillo Lima

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Você pode fazer estruturas com uma variável contador que vai ser acrescida caso seja alocado um aluno chamando assim para adicionar na lista. Espero ter ajudado.
  2. Bom galera é o seguinte estou programando uma tabela de ponteiros para lista. /* ================================================================================== ================================================================================== ================================================================================== */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdio.h>#include <ctype.h>//Constantes#define true 1#define false 0#define MAXTAM 11#define MAXTAMNOME 30//ESTRUTURAS DO PROGRAMAtypedef struct NoLista { char nome[MAXTAMNOME]; //Nome do funcionario int ID; // número de identificação o código char departamento[16]; double salario; struct NoLista *prox;} NoLista, *Lista;typedef struct { struct NoLista *pVetor;} VetorLista[MAXTAM];//funções básicas usadas para manipular o vetor de funcionariosvoid inicialize_vetor (VetorLista* v);_Bool insere_vetor (VetorLista *v);_Bool retira_vetor (VetorLista *v, int *x);void consulta_vetor(VetorLista *v,int x);void lista_codigos_vetor (VetorLista *v, int x);void lista_alfabetica_listas (VetorLista *v);//funçoes básicas usadas para manipular a lista apontada pelo vetor;void inicializa_lista (Lista *l);// acho que não vou precisar inicializar a lista._Bool consulta_lista (Lista *l, int ID);_Bool remove_lista (Lista *l,int *x );void imprimir_codigo (NoLista *p);void imprimir_funcionario (NoLista *p);//funções auxiliaresvoid imprimir_departamento (NoLista *l);int main(){ char op1 ; char op2 ; int opInt; int i; VetorLista v; Lista l; inicializa_lista (&l); printf("Eu estive aqui!\n"); inicialize_vetor (v); printf("Eu estive aqui2!\n"); inicializa_lista (&l); printf("Eu estive aqui2!\n"); for(; { scanf(" %c", &op1); switch(op1) { case 'i': //inserir funcionario scanf(" %d", &opInt); //quantidade de funcionarios a ser inseridos for (i =0; i < opInt;i++){ insere_vetor(v); } break; case 'r': // remove funcionario pelo número de ID scanf(" %d", &opInt); // número ID do funcionario a ser excluido retira_vetor( v,&opInt); break; case 'c': //consulta dados de um funcionário pelo ID scanf(" %d", &opInt); // número ID do funcionario a ser consultado consulta_vetor (v, &opInt);//função terá que imprimir os dados do funcionario em questão: nome, ID, Nome departamento e salario break; case 'l': //lista os funcionários de uma da posição i no vetor scanf(" %c", &opInt); //posição do vetor lista_codigos_vetor (v, &opInt); //Esta operação lista os códigos dos funcionários que foram inseridos na lista associada da posição do vetor break; case 'o': scanf(" %C",&op2); if (op2 == 'c') // Lista em ordem crescente if (op2 == 'd') // Lista em ordem descrecente break; case 'e': exit(1); break; } }return 0;}//--------------------------------vetor-----------------------------------------------------//void inicialize_vetor (VetorLista* v){ int i; for (i = 0; i< MAXTAM ; i++){ v[i]->pVetor = NULL; printf(v[i]->pVetor); }}_Bool insere_vetor (VetorLista *v){ //inserindo ordenadamente char nome[MAXTAMNOME]; //Nome do funcionario int ID; // número de identificação o código char departamento[6]; float salario; int aux; //___________________________Lista ordenada por nomes ___________________________________// NoLista *No_lista_nome; Lista *lista_ordenada_nome;//criar uma lista ordenana por nome melhor quando for usar pra listar por nome. inicializa_lista(&lista_ordenada_nome);//inicializa o vetor //_______________________________________________________________________________________// scanf("%s",&nome); scanf("%d",&ID); scanf("%s",&departamento); scanf("%f", &salario); aux = ID % MAXTAM; //indice do vetor; Lista l,q; l = v[aux]->pVetor; //a lista vai apontar para onde o vetor aponta NoLista *p; if (consulta_lista(l,ID) || (!(p=(NoLista*)malloc (sizeof (NoLista))))){ return false; } strcpy(p->nome, nome); strcpy(p->departamento, departamento); p->ID = ID; p->salario = salario; //inserindo sempre no inicio da lista apontada pelo ponteiro do vetor //inserindo na lista para ordenar por nome ___________________________________________// strcpy(No_lista_nome->nome, nome); //strcpy( //____________________________________________________________________________________// if (v[aux]->pVetor == NULL){ p->prox = v[aux]->pVetor; v[aux]->pVetor = p; //}else{ for(l=(v[aux]->pVetor),q=NULL;(l) && (l->ID > ID);q=l,l->prox); p->prox = q->prox; q->prox = p; } return true;}_Bool retira_vetor (VetorLista *v, int *x){ Lista l; int aux; aux = *x % MAXTAM; //indice do vetor l = v[aux]->pVetor; if (remove_lista(&l,&x)) return true; return false;}void consulta_vetor(VetorLista *v,int x){ int aux; aux = x % MAXTAM; NoLista *p; Lista l; l=(v[aux] ->pVetor); for (p = l; (p) && (p->ID != x); p = p->prox); //encontra na lista o elemento if(p == NULL){ return ; }else{ imprimir_funcionario(p); }}void lista_codigos_vetor (VetorLista *v, int x){ NoLista *l; if (v[x]->pVetor == NULL){ return; } for (l = v[x]->pVetor; l!=NULL; l = l->prox ){ imprimir_codigo(l); }}void lista_alfabetica_listas (VetorLista *v){ Lista l,p; l = v[0]->pVetor; int i; for( i = 1; i < MAXTAM; i++){ if(v[i]->pVetor == NULL){ i++; continue; } for(p = l; p != NULL; p = p->prox); p->prox = v[i]->pVetor; }}//--------------------------------Lista-----------------------------------------------------//void inicializa_lista (Lista *l){ (*l)= NULL;}_Bool consulta_lista (Lista *l, int ID){ //Consulta normal de lista NoLista *p; for (p = l; (p) && (p->ID != ID); p = p->prox); return p;}_Bool remove_lista (Lista *l,int *x ){ NoLista *p,*q; if(!(consulta_lista(l,x))) return false; for (p =(*l),q = NULL;(p)&&(p->ID !=x);q=p,p=p->prox); if (p){ if(q) q->prox = p->prox; else (*l)= p->prox; free(p); } return true;}void imprimir_funcionario (NoLista *p){ printf("%s\n", p->nome); printf("%d\n", p->ID); imprimir_departamento(p); printf("%.2f\n", p->salario);}void imprimir_codigo (NoLista *p){ printf("%d\n", p->ID);}void imprimir_nome (NoLista *p){ printf("%d\n", p->ID);}void ordena_lista_crescente (Lista *l){ Lista p,q,aux1, aux2; if (l== NULL) return; p=*l; if( p->prox == NULL) imprimir_nome(&l); return; for(p =(*l), aux1 = NULL; p== NULL;aux1 =p, p = p->prox){ for (q=p->prox, aux2 =NULL; q != NULL ;aux2 =q, q = q -> prox){ if (stricmp(p->nome, q->nome) > 0){ if (aux1 == NULL){ p->prox = q->prox; q->prox = (*l); *l = q; }else{ } } } }}//--------------------------Funções auxiliares -----------------------------------------------//void imprimir_departamento (NoLista *l){ if (strcmp(l->departamento,'adm')){ printf("administrativo\n"); } if (strcmp(l->departamento,'ped')){ printf("pesquisa-e-desenvolvimento\n"); } if (strcmp(l->departamento,'prod')){ printf("producao\n"); }} Ta ai o código se alguém puder me ajudar agradeço !

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