Großes Taschenrechnerproblem...



  • Hey Leute,
    ich habe in der Schule mit C++ angefangen. Wir benutzen den Borland builder 6.
    Nun haben wir eine Hausaufgabe aufbekommen einen Taschenrechner zu programmieren.
    Der Taschenrechner soll oben ein Label haben wo die rechnung und das ergebnis erscheinen soll.:(
    die zahlen 0-9, +,-,*,/ und das C für löschen sind Buttons zum anklicken.
    die rechnung kann ruhig nur einstellig sein, also nur 2+5 und nicht 11+2 oder so.
    ich verstehe leider so gut wie garnichts.
    ich hab mir schon überlegt ob ich mit switch und case arbeiten kann. aber irgendwie will mir nicht die springende idee kommen wie ich das bewerkstelligen kann.

    ich hoffe ihr könnt mir da weiterhelfen.

    Lg
    Mizu





  • Hallo

    Wenn du hier im BCB-Forum nach *Taschenrechner* sucht, findest du genug Beiträge zu diesem Thema, die dir erstmal ein paar Hinweise geben können. Konkrete Antworten wirst du aber nur zu konkreten Fragen bekommen, erwarte bitte nicht das jemand für dich deine Hausaufgaben macht. Falls dir generelle Kenntnisse in der Sprache C++ fehlen, dann schau dir lieber erst ein allgemeines Tutorial an, auch wenn das erstmal nur die Konsole abhandelt.

    bis bald
    akari



  • ich habe auch nicht vorrausgesetzt das das wer tut 😉

    mein problem ist, dass ich den anfang nicht finde, also wo ich am besten anfangen soll.

    habe mir erstmal überlegt dass man variablen einfügt.
    habe das auch gemacht:
    int Zahl;
    int A;
    int B;
    int Zeichen;

    und für die zeichen habe ich mit
    if ("der jeweilige button")
    {
    option = 1;
    }
    usw
    für die switch case abfrage.

    und jetzt kommt das problem:
    ich hab keine ahnung wie ich die vielen einzelnen buttons so in die funktion einbetten kann, dass die dann in meinem label ausgegeben werden wenn ich auch "="drücke.
    weil in der schule haben wir nur nen taschenrechner gemacht mit 2 edit feldern (wo man die zahlen eingeben muss), auswahlfelder mit +,-,*,/ und nem "=". aber ich weiß nicht wie ich dies nun mit den vielen buttons machen kann.

    tipps reichen mir ja vollkommen.

    und was die suchefunktion angeht:
    hab da mich durchgelesen aber zu 80% nur bahnhof verstanden. außerdem waren zum größten teil andereprobs als ich es hab.

    Hoffe auf antwort.
    Lg Mizu



  • so ein Taschenrechner ist doch recht einfach. Deine int's kannste schonmal durch double's ersetzen, sonst wirds nix mit durch.
    Jetzt machste ne Funktion, die bei nem Drücken von den 0-9 Buttons die Zahl zwischenspeichert. Dann drückste deinen +-*/ Button und du merkst dir welcher gedrückt wurde. Dann füllste mit den Zahlenbuttons die zweite Variable und beim Drücken von = schauste halt, welcher Rechenbutton gedrückt wurde, damit du deine 2 Variablen miteinander verrechnen kannst.
    Taschenrechner werden erst interessant, wenns auf Punkt vor Strich und Klammern ankommt.

    greetz KN4CK3R



  • KN4CK3R schrieb:

    Jetzt machste ne Funktion, die bei nem Drücken von den 0-9 Buttons die Zahl zwischenspeichert.

    wie mache ich das denn das der das zwischenspeichert?

    und ist das richtig wenn ich mit switch und case arbeite?



  • switch kannste da doch eh nur am Ende beim Drücken von = benutzen.

    Ich hab mir beim Speichern der Zahlen einfach die Caption der Buttons zunutze gemacht. Die hießen bei mir "0" - "9" und ich habe allen die gleiche OnClick Funktion zugeordnet.Die Zahl die gedrückt wurde, hab ich dann einfach so rausbekommen:

    void __fastcall Tform::b0Click(TObject *Sender)
    {
    	int zahl = static_cast<TButton*>(Sender)->Caption.ToInt();
    }
    

    greetz KN4CK3R



  • Du brauchst dir die Zahl normalerweise erst dann "merken", wenn du eine Rechenoperation (+/-/:/*) tätigst oder aber das Ergebnis (=) haben willst.
    Ansonsten hast du die gedrückten Zahlen ja normalerweise in einem Edit zusammengesetzt.





  • so habs nun nach einigen stunden an arbeit geschafft.
    ich danke an dieser stelle für die tipps (eins von 4 foren wo man eine freundliche antwort erhält 👍)
    vielleicht schreibt man sich wieder 😉
    [was ich nicht hoffe weil sonst hätt ich wieder schwierigkeiten... 🙄 ]
    Lg
    Mizu


Log in to reply