Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Danillo Lima

Erro em tabela de ponteiro para Lista

Recommended Posts

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 !

Editado por Danillo Lima

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






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

×