2012-08-06 3 views
7

Ich zeichne ein HUGE leer hier.Wie bekomme ich Zeile und Spalte vom Index?

Alles, was ich gefunden habe, ist über einen Index von einer bestimmten Zeile und Spalte, aber wie bekomme ich eine Zeile und eine Spalte aus einem Index?

Die Zeile ist einfach: (int)(index/width).

Mein Gehirn leidet massiven Blutung versucht, die Spalte zu berechnen.

Schande über mich.

Antwort

23

Für einen nullbasierten Index, die beiden Operationen sind:

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

ich % hier bin mit, da ich ein C Typ bin und, obwohl Sie Ihre Sprache nicht angegeben haben, es sieht wie einer der C-basierten.

Wenn Ihre Frage nicht nicht beziehen sich auf C oder seine Brüder, wird es unabhängig von der Modulo-Operator für Ihre Umgebung ist, verließ der Rest über, wenn Sie index durch width teilen.

Wenn Sie nicht ein Modulo-Operator haben, können Sie verwenden:

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

Verdammt richtig, meine Nomenklatur ist ein Chaos, ich habe es auch eine Reihe nennen, lol, gerade jetzt habe ich eine mögliche dumme Lösung: row = Index - (col * width), natürlich, du bist derjenige, den ich gesucht habe, danke! – Icebone1000

+0

Ich würde die x-Position eine Spalte und die y eine Zeile betrachten, so dass dies rückwärts ist. – CodyMace

+0

@CodyMace: Ja, ich hatte in der Antwort klargestellt, dass sie falsch herum waren. Du hast jedoch Recht. Um Verwirrung zu vermeiden, und weil das OP erklärt hat, dass sie es falsch verstanden, habe ich sowohl die Frage als auch diese Antwort aufgeräumt, um das Problem zu beheben. Danke für die Hilfe. – paxdiablo

0

Paxdiablo Antwort ist die richtige. Wenn jemand den umgekehrten Prozess zu bekommen Index von Zeile und Spalte benötigt:

index = (row * width) + column 
Verwandte Themen