Ir ao conteúdo
  • Cadastre-se

Danillo Lima

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Tudo que Danillo Lima postou

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!