Ayuda con funciones
Tengo una estructura que representa un arreglo bi-dimensional de numeros float con R lineas y C columnas como un arreglo A de una dimension de R*C numeros float:
struct dosdim{
int R;
int C;
float * A;
};
Lo que quiero es hacer una funcion llamada get_dosdim a la que se le pase un argumento tipo dosdim por referencia y valores enteros Row y Col por valor. La funcion get_dosdim le asigna a R el valor de Row, y a C el de Col y separa dinamicamente un arreglo de R*C celdas de numeros floats y almacena la direccion de la primera celda en A.
Esta es la forma en que yo la escribi me pueden decir si esta bien?
float get_dosdim(dosdim &adosdim, int Row, int Col)
{
adosdim.R=Row;
adosdim..C-=Col;
adosdim.A= new Float [ adosdim.R][ adosdim.C];
}
Esta esto bien porque no tengo idea de como hacerla
struct dosdim{
int R;
int C;
float * A;
};
Lo que quiero es hacer una funcion llamada get_dosdim a la que se le pase un argumento tipo dosdim por referencia y valores enteros Row y Col por valor. La funcion get_dosdim le asigna a R el valor de Row, y a C el de Col y separa dinamicamente un arreglo de R*C celdas de numeros floats y almacena la direccion de la primera celda en A.
Esta es la forma en que yo la escribi me pueden decir si esta bien?
float get_dosdim(dosdim &adosdim, int Row, int Col)
{
adosdim.R=Row;
adosdim..C-=Col;
adosdim.A= new Float [ adosdim.R][ adosdim.C];
}
Esta esto bien porque no tengo idea de como hacerla
No podria asgurarlo asi que te dare un ejemplo que a mi juicio andaria:
void get_dosdim (dosdim& s, int r, int c)
{
s.R = r;
s.C = c;
float * ptr = new float[r*c];
s.A = ptr;
}
Prefiero usar el new comun porque no sirve de nada que lo creemos como una natriz si accederemos a el como si fuera un bolque de memoria de r*c*sizeof(float) ya que almacenamos la direccion de comienzo de esta zona. Ademas, en la implementacion estandar de C++ new[a][b] deveria reservar un bolque de a*b*sizeof(type) bytes pero hay veces que crea un vector de punteros y los hace apuntar a varios vectores distribuidos en varias partes de la memoria (algo asi como float**) asi que no me confio mucho...
void get_dosdim (dosdim& s, int r, int c)
{
s.R = r;
s.C = c;
float * ptr = new float[r*c];
s.A = ptr;
}
Prefiero usar el new comun porque no sirve de nada que lo creemos como una natriz si accederemos a el como si fuera un bolque de memoria de r*c*sizeof(float) ya que almacenamos la direccion de comienzo de esta zona. Ademas, en la implementacion estandar de C++ new[a][b] deveria reservar un bolque de a*b*sizeof(type) bytes pero hay veces que crea un vector de punteros y los hace apuntar a varios vectores distribuidos en varias partes de la memoria (algo asi como float**) asi que no me confio mucho...
