Justiceira Postado Novembro 18, 2009 Denunciar Share Postado Novembro 18, 2009 Estou usando Structs e ponteiros...Só que não sei declarar nessa parte o ponteirotipo nessa parte do programa//Como faria para declarar esse *paux???void limparMatriz(struct MATRIZ matriz) { int i; for (i=0; i < NLINHAS; i++) { CELULA *paux = matriz.linha[i].direita;[/codebox] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Novembro 19, 2009 Denunciar Share Postado Novembro 19, 2009 Não entendi a dúvida... Você alocou um ponteiro para "CELULA" e quer atribuir o valor dessa variável a um determinado elemento de sua struct ?É isso ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Justiceira Postado Novembro 19, 2009 Autor Denunciar Share Postado Novembro 19, 2009 É que estou começando a aprender linguagem C,e num livro encontrei este codigo,já sei umas coisas e entendi por parte...so q o Dev C++ não esta compilando isso...E queria entender porque faz parte de eu criar um trabalho tambémPor isso postei o codigo todo mas só tem partes q não consegui entender para corrigir como a citada acimastruct DADO {int valor;}; struct CELULA { int lin; int col; struct DADO dado; struct CELULA *direita; struct CELULA *abaixo;};struct MATRIZ {struct CELULA linha[NLINHAS];struct CELULA coluna[NCOLUNAS];};void criar(struct MATRIZ matriz) { int i; for (i=0; i < NLINHAS; i++) { matriz.linha[i].direita = NULL; matriz.linha[i].abaixo = NULL; matriz.linha[i].lin = -1; matriz.linha[i].col = -1; }for (i=0; i < NCOLUNAS; i++) { matriz.coluna[i].direita = NULL; matriz.coluna[i].abaixo = NULL; matriz.coluna[i].lin = -1; matriz.coluna[i].col = -1;}}void limparMatriz(struct MATRIZ matriz) { int i; struct MATRIZ CELULA; for (i=0; i < NLINHAS; i++) { CELULA *paux = matriz.linha[i].direita; while (paux != NULL) { CELULA *prem = paux; paux = paux->direita; free(prem); } }}inserir(struct MATRIZ matriz, int lin, int col,struct DADO dado) { struct MATRIZ CELULA; if (lin < NLINHAS && col < NCOLUNAS) {///////////inserir na linha//aponta para a posição anterior de inserçãoCELULA *paux = &matriz.linha[lin];//procurar posição de inserçãowhile (paux->direita != NULL && paux->direita->col < col) { paux = paux->direita;}//célula já preenchida na martizif (paux->direita != NULL && paux->direita->col == col) paux->direita->dado = dado; else { //cria nova célula CELULA *pnovo = (CELULA *) malloc (sizeof(CELULA)); pnovo->dado = dado; pnovo->lin = lin; pnovo->col = col; //insere na linha pnovo->direita = paux->direita; paux->direita = pnovo; ///////////inserir na coluna paux = &matriz.coluna[col]; //procurar posição de inserção while (paux->abaixo != NULL && paux->abaixo->lin < lin) { paux = paux->abaixo; } //insere na coluna pnovo->abaixo = paux->abaixo; paux->abaixo = pnovo; }return true;}return false;}remover(struct MATRIZ matriz, int lin, int col) { struct MATRIZ CELULA; if (lin < NLINHAS && col < NCOLUNAS) {//aponta para a posição anterior de remoçãoCELULA *paux = &matriz.linha[lin];//procurar posição de remoçãowhile (paux->direita != NULL && paux->direita->col < col) { paux = paux->direita;}//se o elemento a direita é o procurado, removerif (paux->direita->col == col) { CELULA *prem = paux->direita; paux->direita = paux->direita->direita; free(prem);}return true;}return false;} consultar(struct MATRIZ matriz, int lin, int col,struct DADO dado) { struct MATRIZ CELULA; if (lin < NLINHAS && col < NCOLUNAS) { CELULA *paux = matriz.linha[lin].direita;while (paux != NULL) { if (paux->col == col) { dado = paux->dado; return true; } paux = paux->direita;}dado.valor = 0;return true;}return false;}[/codebox] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Novembro 19, 2009 Denunciar Share Postado Novembro 19, 2009 Qual é o erro ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RSalvador Postado Novembro 20, 2009 Denunciar Share Postado Novembro 20, 2009 Olá, JusticeiraSe você está aprendendo C++, esqueça esse código. Ele é cheio de detalhes que não são simples de entender. Por exemplo, a declaração de um ponteiro dentro de um struct, e o seu funcionamento.Mas se o C++ não está compilando este código, deve ser porque NLINHAS e NCOLUNAS não estão definidas. Além disso, não há uma função main, ou seja, o compilador não sabe por onde começar. Devem haver outros problemas, mas estes são notáveis.Novamente, se você está iniciando, deixe este código de lado e procure outros mais simples. Aqui mesmo no fórum há tutoriais e links.Abraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Justiceira Postado Novembro 21, 2009 Autor Denunciar Share Postado Novembro 21, 2009 Na verdade já tem isso da definição de NLINHAS e NCOLUNAS#define NLINHAS 10#define NCOLUNAS 10E quanto a erros não quer compilar diz que não esta declarado paux,prem,pnovo...entre outrosEsse é o problema maior não sei se seria issostruct MATRIZ *paux;não entendi mesmo issoE só não troco de programa porque preciso entregar um trabalho com a função de inserção somente,porem tenho q fazer ele todo pra rodar e estar certo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Novembro 21, 2009 Denunciar Share Postado Novembro 21, 2009 Essa linha que você postou (struct MATRIZ *paux;) cria uma variável paux que é um ponteiro para a estrutura MATRIZ.Se possível, posto o código completo, os erros que ocorrem, etc. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Justiceira Postado Novembro 26, 2009 Autor Denunciar Share Postado Novembro 26, 2009 alguém poderia me explicar qual a função dessa linha(pensando numa matriz esparsa)aux.direita.valor=valortipo temos varios zeros que não seriam inseridos porem o q essa linha acima faz??tipo estou no 1° zero ele é a vaiavel aux??0 6 0 00 0 0 51 0 0 80 0 1 0seria uma por exemplo struct celula{ float valor; struct celula *direita;}; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 26, 2009 Denunciar Share Postado Novembro 26, 2009 acho q esse codigo nem ia compilar...acho q teria q ser assim não??aux.direita->valor=valor Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Justiceira
Estou usando Structs e ponteiros...Só que não sei declarar nessa parte o ponteiro
tipo nessa parte do programa
//Como faria para declarar esse *paux???
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.