Taschenrechner mit GUI Rechenfehler.



  • Guten Tag zusammen,ich habe folgende Frage da ich nicht auf die Lösung komme.
    Ich habe mir gestern einen Taschenrechner programmiert.
    Mit der unten aufgeführten weise habe ich alle Buttons versehen um mir die Zahlen ausgeben zu lassen und in der variable als ganze Zahl zu speichern.
    Ca. nach 10 maligem betätigen einer zahl bekomme ich nur noch skurile werte mit nageativem vorzeichen dann weider positiv und irgendwann wieder 0 woran kann es denn liegen?
    Ich habe double und long double versucht für e1 doch ändert sich nichts an der anzahl der Betätigungen bis zu den falschen werten.

    void CTaschenrechner3Dlg::On1()
    {
    UpdateData(TRUE);
    e1=10*e1+1;
    m_Zahl1=e1;
    UpdateData(FALSE);

    }

    e1 ist eine double variable.

    Dies ist jetzt der Block für das Button mit der Zahl 1.



  • Das klingt nach Zahlenüberlauf. Schau mal in die MSDN, für welche Zahlenbereiche deine Variablen gedacht sind. 🙂



  • Ich geh mal davon aus das du einen überlauf hast, wenn du mit double rechnest mußt du auch alle variablen in double wandeln. Aber das is nur dahinüberlegt, debug könnte da helfen das Problem einzugrenzen.

    Gruß Matthias



  • Vielen Dank ich habs gerade auch gesehen woran es liegt, die Edit box hat long als variable deswegen denke ich ist auch dieser Fehler vorhanden.
    Leider steht double nicht zur Auswahl im assistenten nun muss ich sehen wie ich es in double ändern kann.
    Eine Frage wäre da noch ..

    void CTaschenrechnerDlg::Onplus()
    {

    e2=e1;
    e1=0;

    UpdateData(TRUE);
    m_ergebnis=e1;
    UpdateData(FALSE);

    }

    void CTaschenrechnerDlg::OnBerechnen()
    {

    e3=e2+e1;
    UpdateData(TRUE);
    m_ergebnis=e3;
    UpdateData(FALSE);
    e1=0;
    e2=0;
    e3=0;
    }

    Kommt vileicht jemand auf eine Lösung das problem hierbei ist das ich nach betätigen des + buttons e1 nochmal eingeben und die beiden werte zu e3 addiert werden wenn ich auf = Drücke welchen OnBerechnen entspricht.
    Nur möchte ich ja die anderen Grundrechen arten auch anwenden und muss die addition somit aus OnBerechnen rausnehmen.
    Wenn ich es allerdings in Onplus packen würde käme da nur e2 als ergebniss da e1 ja auf null gesetzt wird, hat jemand eventuell einen tip dies zu lösen?



  • AHH vielen dank nochmal hab auch die lösung dafür erdacht irgendwie komisch sass gestern den ganzen tag dran und kam nicht drauf und nu gehts flot.


Anmelden zum Antworten