elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] Arreglos de m*n enteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [C] Arreglos de m*n enteros  (Leído 4,394 veces)
GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
[C] Arreglos de m*n enteros
« en: 1 Octubre 2015, 23:35 pm »

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.

¿Cómo hago esto?


Ni siquiera se me ocurre como empezar,
¿un arreglo de m*n enteros? ¿a qué se refiere con eso?

int a[m][n]; ?

Y cómo es eso que tome unafila y una columna, realmente estoy perdido.

Saludos!


En línea

LET'S DO STUFF!!
0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: [C] Arreglos de m*n enteros
« Respuesta #1 en: 1 Octubre 2015, 23:43 pm »

Citar
int a[m][n]; ?
Creo que si

Un arreglo de m*n enteros es int arreglo[m*n] o int arreglo[m][n] el primero es un arreglo unidimensional el segundo una matriz.


En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: [C] Arreglos de m*n enteros
« Respuesta #2 en: 1 Octubre 2015, 23:48 pm »

Bueno, pero cómo hago para pasarle una fila y una columna, además a qué se refiere con interpreté el arreglo unidimensional como una matriz.

O sea yo le paso una fila y una columna y el me debería devolver una matriz de eso, no realmente no lo entiendo.
En línea

LET'S DO STUFF!!
A.I.

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: [C] Arreglos de m*n enteros
« Respuesta #3 en: 1 Octubre 2015, 23:54 pm »

Tienes que crear un array unidimensional de m*n posiciones.

Código
  1. int elArray[N]; //donde N es igual a n*m

Pero tienes que hacer que para el que llama a la función lo vea como una matriz de n filas y m columnas. Es decir a la función le pasas las coordenadas de matriz (fila, columna) y te debe devolver ese elemento.

Código
  1. elementoArray ( elArray, fila, columna); //asi seria la llamada a la funcion

Básicamente es hacer un poco de aritmética a la hora de seleccionar la posición del array unidimensional partiendo de coordenadas bidimensionales.
En línea

GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: [C] Arreglos de m*n enteros
« Respuesta #4 en: 2 Octubre 2015, 00:08 am »

Código
  1. /*
  2. 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.
  3. */
  4. #include <stdio.h>
  5.  
  6. int pos(char a[], int x, int y){
  7.  
  8. printf ("Elemento correspodiente a la fila %d y columna %d: %d\n",x,y,a[x][y]);
  9. return a[x][y];
  10. }
  11.  
  12.  
  13. int main (void){
  14.  
  15. int n,m;
  16. int N;
  17.  
  18. printf ("Introduzca las n filas: ");
  19. scanf ("%d",&n);
  20. printf ("Introduzca las m columnas: ");
  21. scanf ("%d",&m);
  22.  
  23. N=n*m;
  24.  
  25.        // ¿Cómo lo lleno con bucles?
  26. //for
  27.  
  28. int a[N];
  29.  
  30.        /*
  31.         ..........
  32.         */
  33.  
  34. pos(a, 3,6);
  35.  
  36.  
  37.  
  38. return 0;
  39. }
  40.  

Sigo sin entenderlo del todo...
« Última modificación: 2 Octubre 2015, 00:10 am por nisteeklod » En línea

LET'S DO STUFF!!
A.I.

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: [C] Arreglos de m*n enteros
« Respuesta #5 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
  1. 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 hacer

Código
  1. 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.
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: [C] Arreglos de m*n enteros
« Respuesta #6 en: 2 Octubre 2015, 00:26 am »

Las matrices ya las conoces no?

int matriz[m][n] esa es una matriz con m*n elementos.

Si quisiera saber el elemento en la segunda fila y tercera columna el código sería asi:

matriz[1][2]

Ahora tienes que hacer que un arreglo unidimensional se comporte de esa manera.
Un arreglo unidimesional de m*n es así int unidim[m*n]

Ahora si quieres acceder a la segunda fila y tercera columna sería así unidim[(n*1) + 2 ]

El resultado sería lo mismo que en la matriz, pero lo hicimos con un arreglo unidimensional

Ahora como ya te dijeron, tienes que hacer una función que haga eso, lo que tienes está bien, pero tiene que ser con un arreglo unidimensional no con una matriz.
« Última modificación: 2 Octubre 2015, 00:29 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: [C] Arreglos de m*n enteros
« Respuesta #7 en: 2 Octubre 2015, 16:23 pm »

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
  1. 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 hacer

Código
  1. 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
  1. /*
  2. 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.
  3. */
  4.  
  5. #include <stdio.h>
  6. /*
  7. int pos (int a[], int fila, int columna){
  8. // pos(a,1,1)
  9.  
  10. // 10 11
  11. // 12 13
  12.  
  13. //array(1,2)=a[3*n+(columna-1)]=a[3*1+1]=a[4]
  14.  
  15.  
  16. // pos(a,2,2) = a[4]
  17.  
  18. // 10 11 12 13
  19.  
  20. a[4];
  21.  
  22.  
  23.  
  24. }
  25. */
  26.  
  27. int main (void){
  28. int n,m,l=0; // arrays
  29. int i,j;
  30. int fila,columna;
  31. int z=10;
  32.  
  33. printf ("Introduce el numero de filas: ");
  34. scanf ("%d",&n);
  35. printf ("Introduce el numero de columnas: ");
  36. scanf ("%d",&m);
  37.  
  38. /// N=n*m;
  39.  
  40. int array[n][m];
  41. int array_u[l]; // array unidimensional.
  42.  
  43. for (i=0;i<n; i++){
  44. for (j=0; j<m; j++){
  45. array[i][j]=z++;
  46. }
  47. }
  48.  
  49. printf ("Imprimiendo elementos array ...\n");
  50.  
  51. for (i=0; i<n; i++){
  52. for (j=0; j<m; j++){
  53. printf ( "%d ",array[i][j]);
  54. }
  55. printf ("\n");
  56.  
  57. }
  58.  
  59. printf ("Ingresa el numero de fila y columna: \n");
  60. scanf ("%d %d",&fila,&columna);
  61.  
  62. for (i=0; i<n; i++){
  63. for (j=0; j<m; j++){
  64. array_u[l]=array[i][j];
  65. l++;
  66. }
  67. }
  68. printf ("\n");
  69. for (l=0; l<n*m; l++)printf ("%d ",array_u[l]); // Esto es lo que le paso a la función.
  70.  
  71. //pos(array_u,fila,columna);
  72.  
  73.  
  74.  
  75. return 0;
  76. }
« Última modificación: 2 Octubre 2015, 16:46 pm por nisteeklod » En línea

LET'S DO STUFF!!
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: [C] Arreglos de m*n enteros
« Respuesta #8 en: 2 Octubre 2015, 16:43 pm »

Código
  1. int array_u[l]; // array unidimensional.
l = 0.
Array de 0 elementos.
En línea

GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: [C] Arreglos de m*n enteros
« Respuesta #9 en: 2 Octubre 2015, 16:49 pm »

Perdón debería definirlo array_u[n*m] de todos modos ahí no es donde está el error.
Estaba mal definido estamos de acuerdo, pero el problema acá es el enunciado que no termino de entenderlo.
En línea

LET'S DO STUFF!!
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Concatenar enteros.
Programación C/C++
Nanoc 3 9,554 Último mensaje 12 Junio 2010, 01:24 am
por Littlehorse
Ingresar 10 enteros « 1 2 »
Programación C/C++
mili03 10 9,349 Último mensaje 4 Julio 2010, 02:54 am
por d4n0n3
Desbordamiento de enteros en PHP 5.x
Noticias
wolfbcn 0 1,932 Último mensaje 29 Abril 2011, 13:47 pm
por wolfbcn
Suma de enteros en C
Programación C/C++
osofer 9 3,949 Último mensaje 15 Agosto 2011, 22:54 pm
por osofer
tipos de enteros en C « 1 2 »
Programación C/C++
lucaslopez0000 11 5,831 Último mensaje 20 Diciembre 2012, 02:24 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines