hola n_i! para enviar un arreglo a una funcion solo basta con pasarle la direccion de inicio del arreglo, como el nombre de todo arreglo es el inicio, podes hacer:
Código C:
Ver originalpedir_matriz(A); // llamada a la funcion pedir_matriz donde se le pasa como argumento la matriz A
El problema con los arreglos de dos dimensiones (o mas) es que en la funcion se debe declarar el numero de columnas(el numero de filas se puede omitir), ej:
Código C:
Ver originalvoid pedir_matriz(int A[nFILAS][nCOLUMNAS])
{ .... }
// o tambien la podes declarar como
void pedir_matriz(int A[][nCOLUMNAS])
{ .... }
Ahora ¿que son nFILAS y nCOLUMAS? estos nombre deben estar declarados e inicializados en algun lugar. Generalmente yo trabajo a esas variables como define las cuales van a hacer el maximo tamaño de la matriz, ejemplo:
Teniendo estos define declaro en el main la matriz como:
Código C:
Ver originalint A[nFILAS][nCOLUMAS]; // maximo de filas 10 y maximo de columas 15
Luego pido al usuario que ingrese el tamaño de la matriz
"que él va a utilizar"... Resumiendo en codigo seria:
Código C:
Ver original#define nFILA 8
#define nCOLUMNA 8
int main (int argc, char*argv[])
{
int fila1
=atoi(argv
[1]),columna1
=atoi(argv
[2]),fila2
=atoi(argv
[3]),columna2
=atoi(argv
[4]) int i=0, j=0, k=0, s;
int A[nFILA][nCOLUMA],B[nFILA][nCOLUMA],Aux[nFILA][nCOLUMNA];
// mini compro para mejorar mas adelante
if (fila1<=0 || columna1<0 || fila2<=0 || columna2<0 || columna1!=fila2)
{
printf ("\a \"Debe ingresar un orden mayor que cero\"\n\n"); }
else {
pedir_matriz(A,fila1,columna1); // llamada a la funcion donde se le pasa la matriz, el numero de filas y de columnas ingresados por el usuario
pedir_matriz(B,fila2,columna2);
// reliza las operaciones
for(i=0;i<fila1;i++){
for(j=0;j<columna2;j++){
s=0;
for(k=0;k<fila2;k++){
s=s+(A[i][k]*B[k][j]); }
Aux[i][j]=s;
}
}
//Mostras la respuesta
printf ("\"La Matriz respuesta es\"\n"); for(i=0;i<fila1;i++){
for(j=0;j<columna2;j++){
}
}
}
return 0;
}
Y la funcion seria:
Código C:
Ver originalvoid pedir_matriz(int mat[nFILA][nCOLUMNA], int fila, int columna)
{
int i,j;
printf ("\"Ingrese los datos de la matriz"\n
"); for(i=0;i<fila;i++){
for(j=0;j<columna;j++){
printf("Posicion[%d][%d]: ",i+1,j+1);
scanf("%d",&mat[i][j]);
}
}
Espero q se haya entendido algo. Saludos