[C] Necesito ayuda con cómo pasar valores de matrices a una función...

Iniciado por niñoAtómico, 15 Octubre 2013, 02:20 AM

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

niñoAtómico

Hola Gente:

Estoy tratando de resolver el siguiente problema:

"Realizar un programa en código C el cual permita la carga de una matriz de 3X3 desde teclado, esta matriz se llamara MatOrigen.
Una vez cargada la matriz sumar los valores de cada columna y el resultado de cada columna debe ser alojado en un vector de 3 posiciones que se llamara resultado. La sumatoria deberá ser implementada mediante una función que se llame ufdSumaColumna."

El tema es cómo le paso los valores de la matriz a la función. Ya probé diez mil formas. La más decente es esta (pero no funciona):

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int ufdSumaColumna(int y [3][3]);
int main(int argc, char *argv[]) {

int resultado[3];
int matOrigen [3][3];
int fila;
int columna;

printf("Ingrese los valores para una matriz de 3 por 3\n");
for(fila =0; fila <3; fila++){
for(columna=0; columna <3; columna++){
scanf("%i", &matOrigen[fila][columna]);
}
}

    resultado[3] = ufdSumaColumna(matOrigen);

printf("Las columnas sumadas dan: %i\t%i\t%i\n", resultado[1], resultado[2], resultado[3]);
return 0;
}

int ufdSumaColumna (int y[3][3]){

int x[3];
int fila, columna;

for(columna=0; columna<3; columna++){
for(fila=0; fila<3; fila++){
x[columna]= y[fila][columna]+x[columna];
}
}

return x[3];
}[code]

La verdad no se me ocurre como hacerlo, si alguno me da una pista estaré muy agradecido. Seguramente es muy simple, pero no se me ocurre....


Saludos...


[/code]
"Los genios son idiotas insistentes..."

rir3760

En C una función no puede retornar un array, en su lugar debes declarar la función con dos parámetros, el primero es el array de arrays donde se almacenan los valores a procesar y el segundo el array de tres elementos para la sumatoria de cada columna:

void ufdSumaColumna(int mat[][3], int suma[])
{
   int i;
   int j;

   for (j = 0; j < 3; j++){
      suma[j] = 0;
      for (i = 0; i < 3; i++)
         suma[j] += mat[i][j];
   }
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

niñoAtómico

Buenísimo... Muchísimas gracias... Me iba a volver mono tratando de resolverlo...

Gracias!!! :D  :D :D
"Los genios son idiotas insistentes..."