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

Ayuda con puntero a puntero a entero

Estas en el tema de Ayuda con puntero a puntero a entero en el foro de C/C++ en Foros del Web. Hola. Estoy haciendo un ejercicio que dice: Hacer un programa que lea 25 valores enteros en una tabla de 5 por 5, y que después ...
  #1 (permalink)  
Antiguo 17/07/2008, 10:54
 
Fecha de Ingreso: julio-2008
Mensajes: 25
Antigüedad: 15 años, 9 meses
Puntos: 0
Ayuda con puntero a puntero a entero

Hola. Estoy haciendo un ejercicio que dice: Hacer un programa que lea 25 valores enteros en una tabla de 5 por 5, y que
después muestre la tabla y las sumas de cada fila y de cada columna.
El problema es que me da el error "cannot convert int[*][5] to int ** for argument 2 to int calcular_suma_filas(int, int**)". No tengo experiencia trabajando con matrices, asi que agradeceria que me explicaseis por que da el error y como solucionarlo.
Un saludo.


#include <cstdlib>
#include <iostream>

using namespace std;
//************************************************** ***************************
int calcular_suma_fila(int i, int **array);
int calcular_suma_columna(int i,int **array);
//************************************************** ***************************
int main(int argc, char *argv[])
{
int array[5][5];

for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
cout << "Introduzca el elemento de posicion:" << i << j << endl;
cin >> array[j][i];
}
}
for(int i=0; i<5; i++)
{
cout << "La suma de la fila " << i << "es:";
cout << calcular_suma_fila(i, array) << endl; //Aqui esta el error
}
system("PAUSE");
return EXIT_SUCCESS;
}
//************************************************** ****************************
int calcular_suma_fila(int i, int **array)
{
int suma = 0;

for(int j=0; j<5; j++)
{
suma += array[i][j];
}
return suma;
}
  #2 (permalink)  
Antiguo 17/07/2008, 12:48
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Ayuda con puntero a puntero a entero

Mi opinion es que el compilador no puede resolver la direccion de memoria de cada elemento de la matriz que definiste, usando la firma de la funcion que tienes.

Cambia esto:

Código:
int calcular_suma_fila(int i, int **array)
por

Código:
int calcular_suma_fila(int i, int *array[5] )
tanto en la especificacion de arriba, como en la definicion de abajo
y sospecho que el compilador no reclamara' mas...
  #3 (permalink)  
Antiguo 17/07/2008, 16:21
 
Fecha de Ingreso: julio-2008
Mensajes: 21
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda con puntero a puntero a entero

Si has declarado la matriz estática prueba a pasarla luego por la cabecera así:

int calcular_suma_fila(int i, int array[][5] );

Aunque igual el que comentan arriba también te compile y te funcione.
  #4 (permalink)  
Antiguo 17/07/2008, 16:59
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Ayuda con puntero a puntero a entero

No estoy de acuerdo. La especificacion

Código:
int calcular_suma_fila(int i, int array[][5] )
va a tener los mismos problemas que los que indica originalmente.

Es necesario especificar la primera dimension.

La solucion deberia ser:

Código:
int calcular_suma_fila(int i, int *array[5] )
O bien

Código:
int calcular_suma_fila(int i, int array[5][] )
  #5 (permalink)  
Antiguo 18/07/2008, 07:12
 
Fecha de Ingreso: julio-2008
Mensajes: 21
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda con puntero a puntero a entero

Hace mucho que no uso ese tipo de matrices pero miré programas que tenía por ahí compilados en dónde lo pasaba así y funcionaban perfectamente por eso le comenté que probara eso, he aqui un ejemplo;

int Media (const int M[][NCOLUMNAS], int FIL, int COL) {
int acu=0;
for (int i=0;i<FIL;i++)
acu=acu+M[i][COL];
return acu;
}
  #6 (permalink)  
Antiguo 18/07/2008, 11:26
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Ayuda con puntero a puntero a entero

Me retracto. Lo que corresponde es especificar la ultima dimension, no la primera.
  #7 (permalink)  
Antiguo 02/08/2008, 10:51
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda con puntero a puntero a entero

Así que haciendo el curso de C Con Clase, eh? ;)

Yo también estoy haciendo ese curso, y el problema ese de matrices lo resolví sin usar funciones especiales con punteros a punteros a enteros como parámetros de entrada en ningún momento como hiciste tú (de hecho ese ejercicio es del capítulo 10 y los punteros son el 12, pero bueno) y lo único que hice fue declarar int matriz[5][5] para luego ir metiendo en un bucle for con scanf cada elemento de la matriz, y luego hacer las sumas y demás trabajando con los índices del array, sin usar ningún puntero. Al nivel del curso en el que está el problema creo que así se ve de forma más clara.

Saludos
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 23:51.