Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

05.11.2010, 16:44

Algorithmus zur Ergänzung auf nächsten 50er

Hallo,

Ich Versuche zur Zeit einen Allgorithmus zu finden, der mir eine Zahl auf den nächsten 50er auf - bzw abrundet (welcher eben näher ist) und komme dabei nicht weiter.

Ich denke anhand eines Bispiels kann ich mein Problem besser darstellen:
Also ... mal angenommen man bekommt jetzt die Zahl 125 soll diese auf 150 "aufgerundet" werden.
Wenn die Zahl jetzt aber zB 124 ist, soll sie auf 100 "abgerundet" werden.

Ich habe schon versucht, es über Modulo zu lösen, indem ich den Rest dazuaddiert habe.
Nen versuch mit ner while - Schleife habe ich auch schon unternommen - denke mir aber, dass es da sicherlich etwas besseres gibt ..
Hoffe ihr könnt mir helfen und mir einen schups in die richtige richtung geben.

Liebe Grüße,
Ombalat

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

05.11.2010, 16:56

Ich habe schon versucht, es über Modulo zu lösen, indem ich den Rest dazuaddiert habe.

Was ist daran nicht gut? Modulo scheint mir eine sehr elegante Lösung zu sein.

Du machst einfach die Zahl Modulo 50 (bei deinem Bsp. 25) dann schaust du da ob es grösser/gleich 25 ist (das ginge auch generisch für andere Zahlen) und addierst den Rest von 50 dazu, respektive den Betrag ab (falls < 25).

3

05.11.2010, 17:35

Hey,

mit dem Modulo funktioniert es eh :D
Ich hab aus versehen das Falsche Rect zum rendern verwendet, ist mir nicht aufgefallen ^^

Danke auf jeden fall ^^
Liebe Grüße,
Ombalat

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

5

05.11.2010, 22:52

(2*(3-n)/1)^3

yay, ich kann das auch ^^ Aber mal ersthaft:

(x+25)%50, mit x=15 kommt da 40 raus... und was soll das jetzt sein?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

06.11.2010, 00:15

((x+25)/50)*50
Aufpassen, funktioniert nicht für x < 0!

7

06.11.2010, 13:03

und nur für integer, oder?

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

8

06.11.2010, 13:07


(x+25)%50, mit x=15 kommt da 40 raus... und was soll das jetzt sein?
40-40=0 => fastest solution ever

9

06.11.2010, 19:37

Hey da ist ja ne klene diskussion entstanden ^^
Ich kann euch aber nicht so ganz folgen ...

Ich habe es so gelöst:

C-/C++-Quelltext

1
2
3
4
if(x % 50 >= 25)
    x += (50 - (x % 50));
else if(x % 50 < 25)
    x -= (x % 50);

10

07.11.2010, 12:24

Nö so is das aber scheiße :D

C-/C++-Quelltext

1
2
3
4
if(x % 50 >= 25)
    x += (50 - (x % 50));
else if(x % 50 < 25)
    x -= (x % 50);
also nen anderes else würde mir nicht einfallen ^^ ... >= bleibt nurnoch < ;) ...

C-/C++-Quelltext

1
x -= (x % 50) - (x % 50 < 25 ? 0 : 50);
;) ... aber das is auch hässlich, da zweimal mod.immernoch drin ist (kay du hattest 3 mal im schlechtesten fall ;))
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige