Cita de: A.I. en 2 Octubre 2015, 00:25 AM
El que llama a la función "ve" esto
10 10 10 // Ésto es una matriz
10 99 10
10 10 10
Sin embargo la función sólo conoce ésto
10 10 10 10 99 10 10 10 //Ésto es un array unidimensional
Tienes que hacer algo para que a partir de la fila y la columna, la función pueda obtener el indice equivalente para el array.
Es decir si llamas a la función así:Código (c) [Seleccionar]pos(array, 1, 1) ;
la función debe transformar ese (1,1) que son las coordenadas del elemento en la matriz a un 4 y entonces hacerCódigo (c) [Seleccionar]return array[4];
Que en este caso sería el 99.
Si no sabes como rellenar un array quizá este problema te venga grande...
Haz un for de N iteraciones donde en cada una pida, genere (o lo que quieras)... un número y lo vaya asignando a posiciones consecutivas del array. Pero hazlo tras declarar el array y no antes.
Todavía no la saco, me parece que lo estoy pensando mal porque se me está complicando demasiado.
Código (c) [Seleccionar]
/*
Dado un arreglo de m*n enteros, escribir una función pos que tome una fila y una columna, y devuelva el entero correspondiente a esa posición, es decir interpreté el arreglo unidimensional como una matriz.
*/
#include <stdio.h>
/*
int pos (int a[], int fila, int columna){
// pos(a,1,1)
// 10 11
// 12 13
//array(1,2)=a[3*n+(columna-1)]=a[3*1+1]=a[4]
// pos(a,2,2) = a[4]
// 10 11 12 13
a[4];
}
*/
int main (void){
int n,m,l=0; // arrays
int i,j;
int fila,columna;
int z=10;
printf ("Introduce el numero de filas: ");
scanf ("%d",&n);
printf ("Introduce el numero de columnas: ");
scanf ("%d",&m);
/// N=n*m;
int array[n][m];
int array_u[l]; // array unidimensional.
for (i=0;i<n; i++){
for (j=0; j<m; j++){
array[i][j]=z++;
}
}
printf ("Imprimiendo elementos array ...\n");
for (i=0; i<n; i++){
for (j=0; j<m; j++){
printf ( "%d ",array[i][j]);
}
printf ("\n");
}
printf ("Ingresa el numero de fila y columna: \n");
scanf ("%d %d",&fila,&columna);
for (i=0; i<n; i++){
for (j=0; j<m; j++){
array_u[l]=array[i][j];
l++;
}
}
printf ("\n");
for (l=0; l<n*m; l++)printf ("%d ",array_u[l]); // Esto es lo que le paso a la función.
//pos(array_u,fila,columna);
return 0;
}