Autor Tema: Averiguar columna y fila de un casillero.

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

14 Marzo, 2024, 02:09 am
Leído 104 veces

Tachikomaia

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 592
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Supongamos que tenemos casilleros nombrados así:
123
456
789

Necesito un método tal que si digo uno de esos números, me diga en qué columna y fila está.

Por ejemplo si le digo 4 debe decirme 1 y 2.

El tamaño del cuadro aumenta con el tiempo así que el método debe tener en cuenta el largo. Es claro que la cantidad de casilleros también aumenta.

Gracias.

Creo que:
Fila = RedondearMás(Casillero/Largo)

Creo que para Columnas hay que hallar una relación tal que a partir de Casillero resulte Columna:
Casillero   Columna
1              1
2              2
3              3
4              1
5              2
6              3
7              1
8              2
9              3
¿Pero qué operación hace semejante zig zag? Parece algo relacionado con el resto de una división.

Veo:
Columna = Resto de Casillero/Largo
Si Columna = 0 entonces ahora Columna = Largo.
Si tienen algo menos enredado avisen.

14 Marzo, 2024, 02:42 am
Respuesta #1

Abdulai

  • Moderador Global
  • Mensajes: 2,862
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Efectivamente, tenés que sacar el resto de la división.

En C

    #define NCOL 3   
    int fila=1+n/NCOL ;   // En C la división trunca la parte entera
    int col=1+n%NCOL  ;   // % Resto de la división

16 Marzo, 2024, 04:52 am
Respuesta #2

Tachikomaia

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 592
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Lo probé en Excel usando largo 4 y me dió esto:

16 Marzo, 2024, 10:30 am
Respuesta #3

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 56,038
  • País: es
  • Karma: +0/-0
Hola

Lo probé en Excel usando largo 4 y me dió esto:
Spoiler
[cerrar]

Las fórmulas de Abdulai funcionan si la tabla empieza a contar en el cero. Si empiezas en el uno, simplemente hay que desplazarlas:

En C

    #define NCOL 3   
    int fila=1+(n+1)(n-1)/NCOL ;   // En C la división trunca la parte entera
    int col=1+(n+1)(n-1)%NCOL  ;   // % Resto de la división

Saludos.

CORREGIDO!!!

16 Marzo, 2024, 01:07 pm
Respuesta #4

Abdulai

  • Moderador Global
  • Mensajes: 2,862
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
...Las fórmulas de Abdulai funcionan si la tabla empieza a contar en el cero. Si empiezas en el uno, simplemente hay que desplazarlas:
Hola Luis, efectivamente si la tabla empieza en 1 hay que desplazarla, pero para el otro lado \( (n-1) \)  ;) 

16 Marzo, 2024, 03:16 pm
Respuesta #5

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 2,356
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada
Hola si haces una subrutina o llamada a un procedimiento con las tres variables:

$$x$$ para el número de la posición que deseas en la tabla, de $$m$$ columnas y $$n$$ filas

haces

Código: [Seleccionar]
funcion cualquiera (posicion  as x, mro_col as m, nro_fil as n)

/ usas la funcion int , integer o cortas con cero decimales lo siguiente

$$fila=int((x-1)/m)+1$$

$$columna=x-(fila-1) * m $$

end

si $$fila > n$$ entonces la posición está fuera de la tabla o lo que es lo mismo $$x>m\cdot n$$

Saludos

Pd. adjunto excel prueba
Saludos  \(\mathbb {R}^3\)