2012-08-06 15 views
7

Estoy dibujando un ENORME en blanco aquí.¿Cómo obtener la fila y la columna del índice?

Todo lo que he encontrado se trata de obtener un índice de una fila y columna determinada, pero ¿cómo obtengo una fila y una columna de un índice?

La fila es fácil: (int)(index/width).

Mi cerebro está sufriendo una hemorragia masiva tratando de calcular la columna.

Lástima de mí.

Respuesta

23

Para un índice basado en cero, las dos operaciones son:

row = (int)(index/width) 
column = index % width 

estoy usando % aquí, ya que soy un tipo C y, aunque no se ha especificado el idioma, sin duda se ve como uno de los basados ​​en C.

Si su pregunta no hace pertenecen a C o de sus hermanos, que será lo que el operador módulo es para su entorno particular, el resto sobra cuando se divide por indexwidth.

Si no tiene un operador de módulo, puede utilizar: Respuesta

row = (int)(index/width) 
column = index - (row * width) 
+0

Maldito seas bien, mi nomenclatura es un lío, yo también lo llama una fila, lol, ahora he encontrado una posible solución estúpida: fila = index - (col * width), por supuesto, el tuyo es el que estaba buscando, ¡gracias! – Icebone1000

+0

Consideraría la posición x una columna y la fila y, así que esto es al revés. – CodyMace

+0

@CodyMace: sí, dejé en claro en la respuesta que estaban equivocados. Sin embargo, tienes razón. Con el fin de evitar confusiones, y debido a que el OP ha declarado que lo hicieron a la inversa, he arreglado tanto la pregunta como esta respuesta para corregir el problema. Gracias por ayudarme – paxdiablo

0

de Paxdiablo es la correcta. Si alguien necesita el proceso inverso para obtener el índice de fila y columna:

index = (row * width) + column 
Cuestiones relacionadas