Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/04/2015, 10:11
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: tablas bidimensionales

Debes incluir todos los mensajes relacionados con tu duda en este post, si no obligarás a los moderadores a borrar o a mover cada mensaje nuevo que estás abriendo con la misma consulta.

Viendo tu código, te adelanto algunos fallos:

Has de tener siempre presente el tipo de retorno de las funciones:

Así, la función
Código C++:
Ver original
  1. Matriz MatrizCrea(int n, int m);
espera que se retorne una variable del tipo Matriz, que es una redefinición de tipo, y que es Matriz*.

Además no puedes redefinir un tipo y ponerle el original, porque eso origina conflicto de nombres. Y además, por tema de legibilidad, uno espera encontrar un tipo redefinido con algún identiifcador que rápidamente le haga ver que es un tipo nuevo (Esto no es nada obligatorio, pero se puede considerar una buena práctica)

Así, que habría que empezar con algo como:
Código C++:
Ver original
  1. typedef struct Matriz* tMatriz;

Ahora, volviendo a la función MatrizCrea(), habría que dejarla así:
Código C++:
Ver original
  1. tMatriz MatrizCrea(int n, int m)
  2. {
  3.     tMatriz aux = (tMatriz)malloc(sizeof(Matriz)*n*m);
  4.     aux->filas = n;
  5.     aux->columnas = m;
  6.     aux->sig=NULL;
  7.     return aux;
  8. }

Atento a varias cosas:
1.-La función espera que se retorne un tipo tMatriz, por lo que aux deberá ser de ese tipo.
2.- Defines a aux como un puntero para poder hacer reserva de memoria. En esta misma página hay una duda similar y queda bien explicada por vangodp

Por otro lado, en la función:
Código C++:
Ver original
  1. void MatrizLibera(Matriz v)

tienes problemas similares al tener la redefinición de tipos mal hecha, y mezclar punteros con objetos.
En todo caso, el error mas claro es este:
Código C++:
Ver original
  1. while(v!=NULL)
Ya que "v" es un objeto de tipo Matriz. Y seguramente tu quieras comprobar que
Código C++:
Ver original
  1. while(v->sig!=NULL)

Puedes probar a sobrecargar el operador != para que tenga el comportamiento que quieres que tenga y hacer el código más legible, pero seguro que no es necesario.

Y ya no he visto mas del código. Arregla esas cosas y no postees en varios sitios, porque el moderador te va a tirar de las orejas!!
__________________
Mi calculadora en Qt