C/Visual C - suma de filas

 
Vista:

suma de filas

Publicado por eduardo (82 intervenciones) el 27/03/2008 03:38:57
La siguiente funcion suma cada fila de matriz[FILAS][COLUMNAS] y la guarda en cada posicion
del vector array_sum_filas[FILAS] de esta forma:

void sumar_filas( const int matriz[][COLUMNAS], int array_sum_filas[FILAS] ) {
register int i, j;
int suma = 0;

printf( " Suma de filas (primer metodo): " );

for( i = 0; i < FILAS; i++ ) {
for( j = 0; j < COLUMNAS; j++ )
suma += matriz[i][j];
array_sum_filas[i] = suma;
suma = 0;
}
}

Pues esto me funciona pero se me pide que lo haga usando sólo Aritmética de punteros, es decir
sin indexar los arreglos, mi primer intento fue este:

void sumar_filas2( const int *matriz, int *array_sum_filas ) {
register int i;
int suma = 0, k = 0;

printf( " Suma de filas (segundo metodo): ");

for( i = 0; i < FILAS * COLUMNAS; i++ ) {
suma += *( matriz + i );
if ( i % COLUMNAS == 0 ) {
*( array_sum_filas + k++ ) = suma;
suma = 0;
}
}
}
No funciona y con razon pero no hallo el algoritmo que me permita solucionar esto.
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:suma de filas

Publicado por Nelek (816 intervenciones) el 08/04/2008 15:07:57
Has probado a hacerte la matriz con "const int ** "?

La segunda... Supongo que FILAS y COLUMNAS deben de ser variables globales o constantes, porque si no... estas haciendo un for sin un limite definido.

Luego, estas sumando un puntero con un entero al hacer "matriz + i" no deberia ser incrementar la direccion donde apunta matriz en un sizeof (int)? o al menos que "i" tambien fuera un puntero que incrementa su direccion para apuntar al elemento que toca partiendo de la direccion inicial *matriz.
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