Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ja_90 en 7 Septiembre 2015, 19:59 pm



Título: Punteros creacion de matriz
Publicado por: Ja_90 en 7 Septiembre 2015, 19:59 pm
Buenas,

En este codigo se trata de crear una matriz utilizando memoria dinamica con punteros, mi pregunta es porque al indicar la creacion de la segunda dimension no se antepone el (*) asterisco. donde esta esta parte del codigo (Vec = new int[y];)

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.  int x = 3;
  8.  int y = 3;
  9.  int **Vec;
  10.  
  11.  Vec = new int*[x]; //crear la primera dimension
  12.  
  13.  for(int i=0; i<x; i++)
  14.  {
  15.    Vec[i] = new int[y]; // Aqui porque no se antepone el * como en el caso de arriba.
  16.  }
  17.  
  18.  for(int i=0;i<x;i++){
  19.         for(int j=0;j<y;j++){
  20.            Vec[i][j] = 1;r
  21.            cout<<Vec[i][j]<< " ";
  22.         }
  23.         cout<<endl;
  24.       }
  25.  return 0;
  26.  
  27. }
  28.  
  29.  




Título: Re: como declaro una Clase llamada Matriz
Publicado por: RockPosts en 7 Septiembre 2015, 20:46 pm
En primer lugar, ¿el tamaño de la matriz está predefinido? ¿Tiene que ser cuadrada (2x2, 3x3...), o cuando te pida el determinante de la matriz no cuadrada te tiene que dar error?. Si la matriz es de un tamaño fijo, lo que tienes que hacer es guardar esa matriz como privada en la clase, tal que así:

Código
  1. class Matriz {
  2.             public:
  3.                   Matriz();
  4.  
  5.                   int get_Size();
  6.                   int get_Determ();
  7.                   int get_Unos();
  8.                   int get_Zeros();
  9.                   int get_Identidad();
  10.  
  11.             private:
  12.                   float matriz[3][3];
  13.  
  14. };

Entonces, a la hora de pasarle el orden, le pasarías 3 (es una matriz 3x3), en el caso del determinante, supondré que sabes como hacer un determinante. En el caso de rellenar, es sencillo (es asignar a cada calor de 'matriz' sus respectivos ceros o unos. Lo mismo en el caso de generar la matriz identidad


Título: Re: Punteros creacion de matriz
Publicado por: Ja_90 en 8 Septiembre 2015, 02:50 am
RockPosts , Gracias por lo que me indicaste.....modifique el tema ya que encontre la forma de crear la matriz de manera dinamica con punteros pero me surge la duda que pongo alli arriba. Quisiera entender esa duda ya que por fin encontre la manera de implementarla en una clase.

Si alguien mas me pudiera colaborar explicandome el porque de mi pregunta. Muchas gracias.


Título: Re: Punteros creacion de matriz
Publicado por: someRandomCode en 8 Septiembre 2015, 03:42 am
Vec es puntero a puntero de int.
Cuando haces el primer new, a Vec se le otorga espacio para almacenar 3 punteros a entero.
Luego, para cada puntero a entero, se le da el espacio para sostener X enteros.
Es decir:
Vec = int**
Vec[] = int*
Vec[][] = int


Título: Re: Punteros creacion de matriz
Publicado por: Ja_90 en 8 Septiembre 2015, 05:52 am
Muchisimas Gracias ya me quedo claro todo.


Título: Re: Punteros creacion de matriz
Publicado por: someRandomCode en 8 Septiembre 2015, 14:08 pm
Barbaro, cualquier consulta decinos..
Una cosita mas, marca como solucionado el thread asi ayuda a otras personas a buscar soluciones rapidas ..