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])'
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


0