• Viernes 15 de Noviembre de 2024, 02:44

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - rkneko

Páginas: [1]
1
C/C++ / Matrices por listas doblemente enlazadas
« en: Jueves 12 de Marzo de 2009, 15:40 »
Buenas, les escribo porque tengo varias dudas sobre como enlazar varias listas.
Les explico, quiero hacer una Sopa de Letras en la que yo introduzca el numero de columnas y de filas y por supuesto la sopa de letras entera.
Para ello yo he creado 3 archivos:
matriz.h : definicion d las funciones y los structs
matriz.cpp : las funciones que utilizare.
sopa.cpp : dond esta el int y llamara a todas las dmas funciones.

en el matriz .h estan las siguientes structuras


Código: C++
  1. struct Filas{
  2.     char dato;        // char para introducir el caracter
  3.     Filas *sig_fila;  
  4. };
  5.  
  6. struct Columnas{
  7.     Filas *filas;
  8.     Columnas *sig_columna;
  9. };
  10.  
  11. struct Matriz {
  12.     int nf;    // numero filas
  13.     int nc;   //numero columnas
  14.     Columnas *m;   
  15. };
  16.  


En el matriz.cpp tengo las funciones:


Código: C++
  1. void CrearMatriz (Matriz &M,int f, int c)
  2. {
  3.     M.nf=f;
  4.     M.nc=c;
  5.  
  6.     M.m = new Columnas[c];
  7.    
  8.     Columnas *aux;
  9.     aux = new Columnas[c];
  10.  
  11.     aux = M.m -> sig_columna;
  12.     Filas *aux1;
  13.  
  14.     for (int i=0;i<f;i++)
  15.     {
  16.         aux1 = new Filas[f];
  17.         aux1 = aux1 -> sig_fila;
  18.             for (int j=0;j<c;j++)
  19.             {
  20.                 aux -> sig_columna;
  21.             }                              
  22.     }
  23. }
  24.  

Supuestamente en el crear matriz lo unico que tengo que hacer es resolver la memoria para la matriz M y sus filas y columnas.


void SetMatriz (Matriz &M,int f,int c,char d) En esta funcion tengo que hacer la implementacion para que me meta en f (fila) c(columna) el caracter que le he pasado dsde el LeerMatriz()


Código: C++
  1. void LeerMatriz(Matriz& M)
  2. {
  3. int f,c;
  4. cout <<"Introduzca filas y columnas" << endl;
  5. cin >> f;
  6. cin >> c;
  7. char aux;
  8.  
  9. CrearMatriz(M,f,c);
  10.  
  11. cout << "Introduzca letras" << endl;
  12. for (int i=0;i<f;i++)
  13. {
  14.  
  15.     for (int j=0;j<c;j++)
  16.     {
  17.         cin >> aux;
  18.         SetMatriz(M,i,j,aux);
  19.        
  20.     }
  21. }
  22. cout << endl;
  23. EscribirMatriz(M);
  24. }
  25.  


Mi pregunta es, que cuando se va al SetMatriz y despues de introducir las letras, ya que hasta el introducir me lo hace todo bien, me da un fallo de segmentacion.

En el crearmatriz() que es lo que tengo que hacer realmente? Está bien reservado ls espacios de memoria? no estoy seguro de haberlo hecho bien.

en el setmatriz() bastaria con un M.m[f][c] = d???

la verdad esque estoy bastante liado con ls punteros porque no se si realmente estan apuntando bien.

Si alguien m puede ofrecer un poco de ayuda o guia de como hacerlo, lo agradeceria, gracias y un saludo!

Páginas: [1]