alle x Zahlen + 1

Kalle2088

Newbie
Dabei seit
Feb. 2013
Beiträge
4
Gibt es sowas in Kurzform?

z.b.

1 2 3 4 = 1
5 6 7 8 = 2
9 10 11 12 = 3
13 14 15 16 =4

usw.

ich wollte es so lösen, aber die Zahlen gehen bis 700 :/ geht sowas einfacher?!

if(x <='4'){
x = 1
}
else if(x >='5' && x <='8'){
x = 2
}
else if(x >='9' && x <='12'){
x = 3
}
else if(x >='13' && x <='16'){
x = 4
}

es soll für ein Mouse Coordinates Script sein, das Problem ist, es sollen alle 4-5 Pixel jeweils immer + 1 zählen da ich nicht jeden Pixel brauch, sonnst passt es nicht mit dem Bild dahinter überein,

so ist es jetzt im Übertragenden Sinne

_______________
|1234|5678|9usw.|

ich möchte es dann so angezeigt bekommen
________________________
|1111|2222|3333|4444|5555|


Das Bild wo später dann das Mouse Coordinates Script drüber laufen soll, man sieht das die Karte auf Kästchen aufgebaut ist, und daher nicht jeder Pixel benötigt wird.

Unbenannt-5.png

EDIT: Falls ich es hier Posten darf, es geht um dieses Script

h*t*t*p://coursesweb.net/javascript/get-mouse-coordinates-inside-div-image_s2
 
Zuletzt bearbeitet:

michi.o

Lieutenant
Dabei seit
Aug. 2010
Beiträge
750
Teile die Zahl doch einfach durch 4 und runde ab:

x2 = (int)x/4;
 

Uwe F.

Captain
Dabei seit
Feb. 2009
Beiträge
3.736
Maus liefert Wert --> z

x = 1
Y = 5

if z < y
Ja
x ist 1

Nein
x = x +1
Y = y +4
if y > 700
Ja
x = 1
y = 5
Schleife neu starten

Nein
Schleife neu starten

Umsetzung bleibt Dir überlassen ;)
 
Zuletzt bearbeitet:

benneq

Admiral
Dabei seit
Juli 2010
Beiträge
9.006
@michi.o: Dein Code liefert in 75% der Fälle immer 1 zu wenig. floor(1/4) = 0, floor(2/4) = 0, floor(3/4) = 0, floor(4/4) = 1

@dr.smy: Deine Funktion liefert aber keine Werte für i mod 4 != 0. Ich glaube, dass das auch erwünscht ist, da der Mauszeiger beim Bewegen nicht jeden Pixel berührt.

@Uwe F.: Dein (übrigens extrem unlesbarer) Pseudocode liefert keine Ergebnisse für z >= 5.



Prinzipiell sollte man so rangehen, dass man erst einmal eine Funktion definiert, die als Eingabe die x-Koordinate der Maus erhält und dann per return das entsprechende Ergebnis zurückgibt. ... und dann füllt man das ganze mit einer passenden Berechnung:

Code:
function berechne(int x) {
  return Math.floor((x-1)/4)+1;
}
Math.floor(...) rundet das was in den Klammern steht ab. Je nach Sprache kann die Funktion auch anders heißen.

Test-Eingaben:
x=1 -> Math.floor((1-1)/4)+1 = Math.floor(0/4)+1 = Math.floor(0)+1 = 0+1 = 1
x=2 -> Math.floor((2-1)/4)+1 = Math.floor(1/4)+1 = Math.floor(0.25)+1 = 0+1 = 1
x=3 -> Math.floor((3-1)/4)+1 = Math.floor(2/4)+1 = Math.floor(0.5)+1 = 0+1 = 1
x=4 -> Math.floor((4-1)/4)+1 = Math.floor(3/4)+1 = Math.floor(0.75)+1 = 0+1 = 1

x=5 -> Math.floor((5-1)/4)+1 = Math.floor(4/4)+1 = Math.floor(1)+1 = 1+1 = 2
...
x=8 -> Math.floor((8-1)/4)+1 = Math.floor(7/4)+1 = Math.floor(1.75)+1 = 1+1 = 2
 
Zuletzt bearbeitet:

UltiSalamander

Lieutenant
Dabei seit
März 2010
Beiträge
536

Kalle2088

Newbie
Ersteller dieses Themas
Dabei seit
Feb. 2013
Beiträge
4
Danke Danke Danke für die vielen Antworten :daumen:

Ich hätte mit keiner Antwort gerechnet.

Besonderen Dank an benneque für die Schöne Ansicht was durch den Befehl passiert.

Ich schau mir mal jede Rechnung an, besten Dank nochmal.

Gruß
Pascal

EDIT: Habe deine Variante genommen benneque läuft 100% passt super mit der Karte.
 
Zuletzt bearbeitet:

maxwell-cs

Lt. Junior Grade
Dabei seit
Juli 2007
Beiträge
465
ich will ja nicht flamen, aber allein auf die idee zu kommen sowas mit ner schleife (oder gar mit ner fallunterscheidung) zu lösen..
 
Top