Math-Schleife zwischen Min und Max mit Mod?

8

Ich versuche, eine winzige (oder vielleicht nicht so winzige) Formel zu erstellen, die Zahlen zwischen einer Min- und Max-Zahl enthält, aber auch diese Zahlen, damit sie nicht abgeschnitten werden, wenn sie außerhalb des Bereichs liegen. Soweit habe ich das.

%Vor%

aber ich möchte, dass es auch die andere Richtung koppelt, so dass, wenn val1 5 ist, was -5 außerhalb von min1 ist, es 86 wird.

Ein anderes Problem, in das ich hineingeraten bin, ist das

%Vor%

wie ich es will, da das max Teil des Bereichs

ist

versuchen, klar zu sein, hier sind einige Beispiele für die gewünschte Ausgabe basierend auf einem Bereich mit Schleifen

%Vor%

Ich möchte nicht auf eine Reihe von if / else-Anweisungen zurückgreifen, aber eine wäre in Ordnung, wenn es absolut erforderlich ist. Ist das überhaupt möglich?

    
TheDarkIn1978 16.06.2010, 22:30
quelle

3 Antworten

3
%Vor%     
Rotsor 16.06.2010, 22:59
quelle
1

Mathematisch sollten Sie in der Lage sein, Folgendes zu tun:

%Vor%

Bewegen Sie Ihren Bereich nach unten, um auf Null zu setzen, schneiden Sie das obere Ende ab und schieben Sie es zurück in den richtigen Bereich. Leider gibt der Operator% in C negative Ergebnisse für negative Zahlen. Also:

%Vor%

Um diese Negative loszuwerden, brauchen wir einen zusätzlichen Modulo:

%Vor%     
Karmastan 16.06.2010 23:20
quelle
1

Entschuldigung. Gelöschte vorherige Antwort. Versuchen Sie Folgendes:

((val-min)% (max-min) + max-min)% (max-min) + min

BEARBEITEN: Wenn Sie möchten, dass max ein gültiger Wert ist, anstatt zu min zu überlaufen, ersetzen Sie max an allen 3 Stellen durch max + 1.

    
Pavel Radzivilovsky 16.06.2010 23:16
quelle

Tags und Links