Praktische Modulo-Beispiele
Anwendungsfälle von Modulo in der Praxis
1. Gerade/Ungerade-Zahlen-Erkennung
bool isEven(int number) {
return number % 2 == 0;
}
bool isOdd(int number) {
return number % 2 != 0;
}
2. Zyklische Array-Indizierung
graph LR
A[Eingabeindex] --> B[Modulo-Operation]
B --> C[Zugriff auf zyklisches Array]
class CircularBuffer {
private:
std::vector<int> buffer;
int size;
public:
int getCircularIndex(int index) {
return index % size;
}
}
Zeit- und Uhrzeitberechnungen
int convertTo12HourFormat(int hour) {
return hour % 12 == 0 ? 12 : hour % 12;
}
Zufallszahlen-Generierung
4. Generierung von Zufallszahlen in einem Bereich
int generateRandomInRange(int min, int max) {
return min + (rand() % (max - min + 1));
}
Datenverteilung
5. Hash-Tabellen-Verteilung
Operation |
Beschreibung |
Hash-Index |
index = key % tableSize |
Lastenausgleich |
Gleichmäßige Datenverteilung |
Kryptografie und Sicherheit
6. Einfache Hash-Funktion
unsigned int simpleHash(std::string input) {
unsigned int hash = 0;
for (char c : input) {
hash = (hash * 31 + c) % UINT_MAX;
}
return hash;
}
Spieleentwicklung
7. Zyklische Sprite-Animation
class SpriteAnimator {
private:
int totalFrames;
int currentFrame;
public:
int getNextFrame() {
return ++currentFrame % totalFrames;
}
}
8. Bitweises Modulo für Zweierpotenzen
// Schnellere Modulo-Operation, wenn der Divisor eine Zweierpotenz ist
int fastModulo(int value, int divisor) {
return value & (divisor - 1);
}
Erweiterte Mustererkennung
9. Erkennung periodischer Muster
bool hasRepeatingPattern(std::vector<int>& sequence, int patternLength) {
for (int i = 0; i < sequence.size(); ++i) {
if (sequence[i] != sequence[i % patternLength]) {
return false;
}
}
return true;
}
Entdecken Sie die Leistungsfähigkeit von Modulo-Operationen mit LabEx – wo Programmierung zur Kunst der Präzision wird!