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

ScuT

Frischling

  • »ScuT« ist der Autor dieses Themas

Beiträge: 2

Wohnort: Mannheim

Beruf: Schüler

  • Private Nachricht senden

1

07.04.2017, 13:30

Modulo Seite. 81 - 82 || Listing 3.9

Hi, ich habe eine Frage zur fünften Auflage von Heiko Kalistas C++ für Spieleprogrammierer.

Ich bin nun beim Modulo und Kalista sagt, das Modulo sehr sehr wichtig wird.

Meine erste Frage ist nun:
Wird es später wirklich so wichtig wie er sagt?
und meine zweite Frage wäre:
Wie genau Modulo funktioniert und wofür man denn sowas braucht.
Den Rest einer Rechnung auszugeben bringt mir soviel ich weiß doch eigentlich gar nichts oder?

Würde mich freuen wenn jemand auch nen Codebeispiel schreiben könnte, in dem Modulo verwendet/gebraucht wird.
Gerne auch per Pn.

MfG
ScuT

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

07.04.2017, 13:41

Den Rest einer Division zu kennen kann sogar sehr sehr interessant sein.
Stell dir vor du willst eine Animation darstellen, die aus 20 Bildern besteht. Die werden wie im Film einfach alle nacheinander angezeigt. Für die Bilder hast du z.B. einen Array, wo die drin liegen. 20 Bilder willst du pro Sekunde anzeigen. Die Zeit ist dafür also essentiell. Aber was genau tun? Eine Variante wäre es, dass du dir die Anzahl der vergangenen Millisekunden geben lässt und.. tja, nun was? Erstmal durch 50 teilen, du willst ja schließlich nicht 1000mal pro Sekunde wechseln, sondern nur 20mal. Damit hast du jetzt zwar eine Zahl, die sich 20mal pro Sekunde ändert, aber du willst ja nur Werte von 0 bis 19 haben, weil du nur 20 Bilder in deinem Array hast. Genau da hilft dir jetzt Modulo:
0 mod 20 = 0
10 mod 20 = 10
19 mod 20 = 19
20 mod 20 = 0
30 mod 20 = 10
39 mod 20 = 19
40 mod 20 = 0
Du kannst das nun als Index in deinem Array verwenden! AngezeigtesBild = Bilder[(millis / 50) % 20]; Der Divisionsrest hat plötzlich einen total praktischen Zweck.

Anderes Beispiel: In älterem C gibt es eine Funktion, die Zufallszahlen generiert zwischen 0 und 65535. Nun will man meist aber lieber was zwischen 0 und 100 oder 0 und 1000 oder sowas in der Art. Auch hier ist Modulo eine der gängigen Lösungen, denn damit kann man das Zahlenfeld wunderbar 'beschränken'. (Statt rand() % 100 ginge natürlich auch rand() * 100 / 65555, beides sind übrigens schlechte Lösungen für gut verteilte Zufallszahlen).
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

3

07.04.2017, 13:47

Oder ein etwas einfacheres Beispiel: Prüfen ob eine Zahl gerade oder ungerade ist. x % 2 -> 0 = gerade ;)

ScuT

Frischling

  • »ScuT« ist der Autor dieses Themas

Beiträge: 2

Wohnort: Mannheim

Beruf: Schüler

  • Private Nachricht senden

4

07.04.2017, 14:10

Alles klar, danke für eure Beispiele.
Hat mir sehr geholfen, und macht mir grad alles viel einfacher.

Wenn ich weitere Fragen dazu habe, meld ich mich.:)

Danke.
Lg.

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

5

07.04.2017, 14:50

Das haengt damit zusammen:
https://de.wikipedia.org/wiki/Kongruenz_(Zahlentheorie)

Natuerlich ist selbst auf der wiki Seite nur ein minimaler Ausschnitt der Anwendungsgebiete zu sehen, aber meiner Meinung nach ein guter Startpunkt.

Werbeanzeige