C/Visual C - problemas con arreglos multidimencionales

 
Vista:

problemas con arreglos multidimencionales

Publicado por aamaritoo (2 intervenciones) el 16/11/2007 16:50:28
hola, tengo un problema llamando un arreglo multidimencional en argumento de funcion.
por lo poco que he leido y segun veo en los libros y ejemplos no se puede pasar un arreglo multidimencional de tipo float creo. pero necesito otra opinion. (todavia no se nada de clases)

este el codigo fuente, yo lo hice declarando el a rreglo tipo int y si funciona:

/***************************************************************************************************/
#include<iostream> // preprosesador incluyendo libreria standar(encabezados)
#include<cmath>

using namespace std; // uso general de la biblioteca standar.

void funcion(float [][5]);

int main()
{

int dimx=5,dimy=5;
float posx[dimx][dimy],xi=0.0,X,paso=0.5;

/**************************************************************************************************/
// LLENANDO EL ARREGLOS CON VALORES

for(int b=0;b<=dimy-1;b++){
X=xi; // llena erreglo de x[][]
for(int a=0;a<=dimx-1;a++){
posx[a][b]=X;
X += paso;
}
}



cout<<"\nLA MATRIZ DE POSICION[][] DE ZONA DE IMPACTO ESTA DADA POR LOS PUNTOS:\n\n\n";

for(int b=0;b<=dimy-1;b++)
for(int a=0;a<=dimx-1;a++)
{
cout<<"["<<posx[a][b]<<"]";
if(a==dimx-1)
cout<<"\n\n";

}

/*************************************************************************************************/
// llamado de funcion

funcion(posx);


system("pause"); // para congelar pantalla
return 0; // devuelve el valor iny a main para terminar satisfactoriamente el programa

}
/*********************************************************************************************/
// impresion de matriz llamada por referencia por funcion

void funcion(float posX[][5])
{
cout<<"\nLA MATRIZ DE POSICION[][] DE ZONA DE IMPACTO ESTA DADA POR LOS PUNTOS:\n\n\n";

for(int b=0;b<=4;b++)
for(int a=0;a<=4;a++)
{
cout<<"["<<posX[a][b]<<"]";
if(a==4)
cout<<"\n\n";

}

}
/**************************************************************************************************/

el error de compilacion que bota es :

cannot convert `float (*)[((unsigned int)((int)dimy))]' to `float (*)[5]' for argument `1' to `void funcion(float (*)[5])'
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problemas con arreglos multidimencionales

Publicado por Nelek (816 intervenciones) el 19/11/2007 08:05:01
El problema que tienes ahi, es que en la definicion le estas exigiendo un array de dimensiones constantes float* [5]; y luego le estas pasando uno dinamico (o una posicion de dicho array).

Poderse si que se puede, pero lo estas enfocando mal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con arreglos multidimencionales

Publicado por Tom (619 intervenciones) el 19/11/2007 16:16:03
El compilador "no sabe" que dimy es 5. Está bastante claro en el mensaje de error.

Prueba declarando:

float posx[dimx][5];
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar