Aus Zahl nächsthöhere "glatte" Zahl errechnen



  • Original erstellt von <Hendrik>:
    Was isn mit dir los !?
    Mein Vorschlag geht über höchstens 99 Iterationen, das ist für den PC doch ein Witz.

    vielleicht, weil while(kontostand%100!=0)++kontostand; nix anderes macht, als kontostand=(kontostand+99)%100;.



  • vielleicht, weil while(kontostand%100!=0)++kontostand; nix anderes macht, als kontostand=(kontostand+99)%100;.[/QB][/QUOTE]

    Wieso das denn ?
    Wenn ich bei mir 5164 als Ausgangswert nehme kommt 5200 raus.
    Bei dir kommt 63 raus.

    Also entweder steh ich voll aufm Schaluch, oder du liegst falsch.



  • beachte die beiden kringel um das /.



  • @volkard
    Wollen wir mal die Formel berichtigen: 😉
    kontostand+=100-kontostand%100;

    Berichtigt: Ich hatte kotostand geschrieben 😉

    [ Dieser Beitrag wurde am 10.07.2003 um 09:23 Uhr von RenéG editiert. ]



  • Original erstellt von <Hendrik>:
    **Es sieht so aus als hieße "glatt" bei dir sowas wie restlos durch 100 teilbar.
    Mein Vorschlag wäre also, den Kontostand so lange zu inkrementieren bzw. dekrementieren bis Kontostand%100==0.

    int kontostand=?;
    while(kontostand%100!=0)
    {
        ++kontostand;
    }
    

    Das lässt sich natürlich auch noch verbessern (laufzeitmäßig).**

    Ganz so dumm ist der Code doch gar nicht nur die iteration kann man sich sparen.

    int kontostand=53424;
    kontstand = (kontostand + 100- (abs(kontostand)%100)) * sign(kontostand);
    53500 = (53424 + 100 - 48) * 1;
    


  • Original erstellt von RenéG:
    **@volkard
    Wollen wir mal die Formel berichtigen: 😉
    kontostand+=100-kontostand%100;
    **

    ja, ungefähr den code meinte ich. war doch klar zu erkennen, gell?



  • Original erstellt von RenéG:
    @volkard
    Wollen wir mal die Formel berichtigen: 😉
    kontostand+=100-kontostand%100;

    Das erhöht aber Zahlen, die schon "glatt" sind, um 100 😉

    if( int mod = kontostand % 100 )
        kontostand += 100 - mod;
    


  • @MFK
    Klaro, aber warum soviele Postings zu dem Thema, obwohl die Frage war, wie man das für 'alle' Zahlen macht, und nicht nur für alle vierstelligen Zahlen.



  • Original erstellt von MFK:
    [quote]Original erstellt von RenéG:
    [qb]@volkard
    Wollen wir mal die Formel berichtigen: 😉
    kontostand+=100-kontostand%100;

    Das erhöht aber Zahlen, die schon "glatt" sind, um 100 😉
    QUOTE]

    Genau das ist nämlich das Problem bei Volkards Formel. Man könnte höchstens vorher prüfen ob "glatt"==true. 😃

    @JoeIntel

    Danke für deinen Beistand 🙂
    Ich muss gestehen, dass ich deine Formel auch nicht ganz verstehe.
    (53424+100-48)*1 ist bei mir 53476 😞



  • Original erstellt von <Hendrik>:

    @JoeIntel

    Danke für deinen Beistand 🙂
    Ich muss gestehen, dass ich deine Formel auch nicht ganz verstehe.
    (53424+100-48)*1 ist bei mir 53476 :([/QB]

    Tja, war wohl ein Zahlendreher beim übertragen man sollte seine Beispiele auch noch mal nachrechnen.


Anmelden zum Antworten