[C]: sumar cada fila de una matriz

Iniciado por andie13, 18 Diciembre 2016, 00:17 AM

0 Miembros y 1 Visitante están viendo este tema.

andie13

Hola!
Necesito calcular la suma de cada fila de una matriz cuadrada tal que así, mediante punteros, pero la suma de las filas no funciona correctamente (me da un valor de más) y las columnas no las suma directamente.

     1       1       1   | 3
     1       1       1   | 3
     1       1       1   | 3
------- ------- -------
     3       3       3 

La matriz está declarada como una estructura con
typedef struct{
int filas;
int columnas;
int *datos;
}Matriz;

El código es el siguiente:
int sumarfilas(Matriz *m)
{
    int i,j,a,b,suma,vertical[i];
    a=m->filas;
    b=m->columnas;
for(i=0;i<a;i++)
    {
    suma=0;
        for(j=0;j<b;j++)
        {
            suma+=*(m->datos+i*b+j);
        }
        vertical[i]=suma;
    }
return vertical[i];
}
int sumarcolumnas(Matriz *m){
    int c,f,a,b,vector[c];
    a=m->filas;
    b=m->columnas;
    for(c=0;c<b;c++){ // por cada columna
        for( f=0;f<a;f++) // por cada elemento de la columna
        vector[c]+=*(m->datos+f*b+c);
       
    }
    return vector[c];
}


Gracias!

MAFUS

Varios fallos:
Línea 3: Ya que 'i' no tiene valor definido contiene un número aleatorio por tanto 'vertical[i]' es un array de dimensión desconocida.

Línea 18: Igual que el error en la línea 3 pero esta vez con 'c' y 'vector[c]'.

Línea 15: Entiendo que quieres devolver un array, pero en C eso no está permitido. De todas formas regresas un valor que está una posición más allá del límite del array 'vertical'. Un fallo dentro de un fallo.

Línea 26: Igual error que la línea 15 pero con el array 'vector'.

andie13

Gracias pro responder.
Entiendo lo que quieres decir, pero si no lo hago con arrays, como puedo hacerlo?