Problem bei einer if Bedingung



  • Hallo,

    ich habe ein kleines Problem mit einer if Bedingung und hoffe das mir jemand einen kleinen Denkanstoss gibt 🙂

    Habe ein kleines Programm das mit Integer Werten arbeitet. Nun möchte ich aber am Ende des Programms prüfen ob eine ganze Zahl durch eine andere ganze Zahl ,5 wird (-Platzhalter, da kann stehen was will). Mir fällt jetzt nur die Umwandlung in einen anderen Datentyp ein und deshalb wollte ich mal fragen ob es auch ohne Umwandlung möglich ist.

    PS: Bin noch ein kleiner C++ Anfänger 😉



  • Wie wär's mit sowas?

    int n1, n2;
    
    ...
    
    if( n1*10 / n2 == *5 )  // den zweiten * mußt Du durch den gewünschten Wert ersetzen
       ...;
    

    Denke aber daran, daß wegen Rundung unter Umständen nicht das gewünschte Ergebnis geliefert wird, daher ist evt. eine Konvertierung nach double sinnvoller.

    mfg Martin


  • Mod

    Man könnte das zwar sicherlich auch intelligenter machen, aber das hier ist simpel zu verstehen: Multipliziere die erste Zahl vorher mit 10 und guck hinterher ob das Ergebnis durch 5 teilbar ist.

    if ((val1*10/ val2) % 5 == 0) // ...
    


  • @SeppJ: Falsch, da 1. eine Integer Division Auftritt (10*100/99=10) und zweitens auch Zahlen mit einer 0 am Schluss durch 5 teilbar sind (10%5=0).

    Meine Lösung:

    //   keine Nachkommastellen bei *2
    //         \            Resultat *2 berechnen (exakt)
    //          \            /              v .5 abschneiden,*2 und .5 hinzufügen
    if ((2*val1)%val2==0&&(2*val1)/val2==2*(val1/val2)+1) //...
    

    therino, der int hero


Anmelden zum Antworten