Foros del Web » Programación para mayores de 30 ;) » C/C++ »

devolver array bidimensional en una función

Estas en el tema de devolver array bidimensional en una función en el foro de C/C++ en Foros del Web. Hola!! Tengo la duda de como devolver en una función un array bidimensional. Para devolver uno unidimensional hago, por ejemplo: float* función() { float x[6]; ...
  #1 (permalink)  
Antiguo 16/04/2009, 05:27
 
Fecha de Ingreso: abril-2009
Mensajes: 3
Antigüedad: 15 años
Puntos: 0
devolver array bidimensional en una función

Hola!!

Tengo la duda de como devolver en una función un array bidimensional.

Para devolver uno unidimensional hago, por ejemplo:

float* función()
{
float x[6];
float* y = x;
x[0] = 1;
x[1] = 2;
return y;
}

int _tmain(int argc, _TCHAR* argv[])
{
float *str = función();
}

y devuelvo el puntero a ese array,

pero...cómo hago para devolver el de un array bidimensional??

Gracias!!
  #2 (permalink)  
Antiguo 16/04/2009, 08:11
Avatar de Claw  
Fecha de Ingreso: abril-2009
Mensajes: 299
Antigüedad: 15 años
Puntos: 9
Respuesta: devolver array bidimensional en una función

¿Qué problemas te da al hacerlo igual que con un array unidimensional? ¿Podrías copiar aquí el error?

Salu2
  #3 (permalink)  
Antiguo 16/04/2009, 10:08
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años
Puntos: 7
Respuesta: devolver array bidimensional en una función

Hola,

Pues como se trata de un arreglo bidimencional tienes que colocarle otro asterísco, para que sea tratado como tal, e inicializarlo con el new tal y como puedes ver en el código:

Código c++:
Ver original
  1. #include<stdio.h>
  2. #include<conio.h>
  3.  
  4. float **arreglo()
  5. {
  6.   float **y=new float*[4];
  7.  
  8.   for(int i=0;i<4;i++)
  9.   {
  10.     for(int j=0;j<4;j++)
  11.     {
  12.       y[i][j]=i*j;
  13.     }
  14.   }
  15.   return y;
  16. }
  17.  
  18. void main()
  19. {
  20.   float **x;
  21.  
  22.   x=arreglo();
  23.   for(int i=0;i<4;i++)
  24.   {
  25.     for(int j=0;j<4;j++)
  26.     {
  27.       gotoxy(30+j*6,12+i*2); printf("%4.2f",x[i][j]);
  28.     }
  29.   }
  30.   getch();
  31. }

Espero que te sea de ayuda, ya que esto de los punturos siempre es impredecibble, XD...
  #4 (permalink)  
Antiguo 17/04/2009, 02:36
 
Fecha de Ingreso: abril-2009
Mensajes: 3
Antigüedad: 15 años
Puntos: 0
Respuesta: devolver array bidimensional en una función

Y partiendo del ejemplo anterior mío...como sería en el caso que pongo ahora??

float** función()
{
float x[6][2];
float** y = x;
x[0] [0] = 1;
x[1] [0]= 2;
return y;
}

int _tmain(int argc, _TCHAR* argv[])
{
float**str = función();
}

el error que me muestra el Visual es, en la 4ª línea: no se puede realizar la conversión de 'float [6][2]' a 'float **'

necesito que sea algo de este estilo,

Gracias!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:34.