Punteros creacion de matriz

Iniciado por Ja_90, 7 Septiembre 2015, 19:59 PM

0 Miembros y 1 Visitante están viendo este tema.

Ja_90

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 (cpp) [Seleccionar]

#include <iostream>

using namespace std;

int main()
{
 int x = 3;
 int y = 3;
 int **Vec;

 Vec = new int*[x]; //crear la primera dimension

 for(int i=0; i<x; i++)
 {
   Vec[i] = new int[y]; // Aqui porque no se antepone el * como en el caso de arriba.
 }

 for(int i=0;i<x;i++){
        for(int j=0;j<y;j++){
           Vec[i][j] = 1;r
           cout<<Vec[i][j]<< " ";
        }
        cout<<endl;
      }
 return 0;

}




:D  ::::Ja_90::::   :D

RockPosts

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 (cpp) [Seleccionar]
class Matriz {
             public:
                   Matriz();

                   int get_Size();
                   int get_Determ();
                   int get_Unos();
                   int get_Zeros();
                   int get_Identidad();

             private:
                   float matriz[3][3];

};


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

Ja_90

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.
:D  ::::Ja_90::::   :D

someRandomCode

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

Ja_90

Muchisimas Gracias ya me quedo claro todo.
:D  ::::Ja_90::::   :D

someRandomCode

Barbaro, cualquier consulta decinos..
Una cosita mas, marca como solucionado el thread asi ayuda a otras personas a buscar soluciones rapidas ..