![]() |
Taschenrechner bauen, Problem mit Addition
Aufgabe ist es, einen Taschenrechner zu schreiben, der u.a. auch Addition beherrscht.
Der Taschenrechner hat ein Edit-Feld, in das Zahlen eingegeben werden können (StrToFloat, aber da liegt auch nciht das Problem), mit denen der Taschenrechner dann über versch. Buttons auf der Benutzeroberfläche Rechnungen durchführt(Eingabefeld ist auch gleich Ausgabefeld). Vorher hatte ich nur Rechnungen, wo etwas mit der eingegebenen Zahl selbst passieren sollte (Wurzel, Quadrat), aber bei der Addition muss ich ja 2 Zahlen angeben, die dann addiert werden. Ich will aber trotzdem nur ein Edit-Feld benutzen. Wisst ihr ne Lösung, wie man z.B. die eingegebenen Werte bei Klick aufs "+" speichern kann und dann einen neuen Wert eingeben kann und dann bei Klick auf einen "="-Button das Ergebnis erscheint? Cool wäre es auch, wenn sich der Schritt mit dem Klick aufs "+" wiederholen lassen kkönnte, sodass auch Rechnungen, wie x+y+z+a+b+c+d machbar wären. Danke im Voraus :) |
Re: Taschenrechner bauen, Problem mit Addition
Variable global für die Funktion (private?) deklarieren und beim OnClick des '+' speichern, was im Editfeld steht. Ist die Variable vorher <> 0, führst du die Berechnung durch.
|
Re: Taschenrechner bauen, Problem mit Addition
Globale Variable deklarieren:
var Speicher: Extended; //Oder was auch immer Und dann vorher dort speichern und wieder holen beim drücken auf "=" |
Re: Taschenrechner bauen, Problem mit Addition
Moin,
solange du nur von links nach rechts rechnest, also sagen wir mal so, alle Rechenregeln vernachlässigst (2+3*2 = 10) kannst du das so machen, dass du dir das Ergebnis zwischenspeicherst. Und nebenbei in einem Boolean speicherst ob bereits mindestens eine Zahl eingegeben wurde. Das heißt, wenn man gibt das so ein:
![]() MfG Fabian PS: Ist ja cool das ein Thread von mir als erstes auftaucht :D |
Re: Taschenrechner bauen, Problem mit Addition
Ja, die Prozedur hab ich auch schon durchgedacht, ich weiß nur nicht, wie man zwischenspeichert, kann da einer mal den Code zu reinschreiben? :?:
Danke, schonmal :-) |
Re: Taschenrechner bauen, Problem mit Addition
mach das doch mit pos('+',s) und dann die zahl vor und nach dem '+' addieren und ergebnis anstatt Zahl1+Zahl2 in den String einfügen... das gleiche dann mit */-. Setzt das dann in je eine 'While pos(..)<>0 do' Schleife.
Wenn du dann die Schleifen in der richtigen Reihenfolge machst (*/+-) hast du sogar die mathematische-Richtigkeit drin. Das ganze reicht dann wenn du das in die =-Button-Procedure packst. Das hat den Vorteil dass der Rechner auch funtioniert, wenn der Benuzter deine Tasten nicht nutzt und es so hinein schreibt. Es wird nur ein Problem wenn du auch Klammern haben möchtest. Gruß Mariaki |
Re: Taschenrechner bauen, Problem mit Addition
Ja, der Taschenrechner soll aber über die Tasten laufen, das war die Vorgabe für die Aufgabe ;)
|
Re: Taschenrechner bauen, Problem mit Addition
Würde ja auch noch klappen.. nur dass die tasten nur noch die Funktion des Einfügens haben.
|
Re: Taschenrechner bauen, Problem mit Addition
Ich hatte auch mal eine Aufgabe und habe diese dann ausgeweitet, beherrschte schließlich Punkt vor Strich.
Man hat einen Term eingegeben, dieser wurde dann in Rechenzeichen und Zahlen zerlegt und dann nach Punkt vor Strich ausgerechnet. ![]() So läuft das Ganze auch nur über Tasten... Liebe Grüße! |
Re: Taschenrechner bauen, Problem mit Addition
Hallo,
um etwas zwischenzuspeichern musst du nur definieren das es einen Zwischenspeicher gibt. Dafür muss du entscheiden, wer alles den Zwischenspeicher kennt. Umso weniger umso besser!
Delphi-Quellcode:
Dabei würde ich sie immer in den privaten Bereich schreiben, und nur wenns nicht anders geht in den public-Bereich. Und in äußersten Notfällen geht auch der 3. Bereich. Aber denn sollte man sogut es geht vermeiden.
type
TClass = class(...) // 2. private // 1. public // 2. end; var // 3. implementation Dort schreibst du dann zuerst den Namen des Zwischenspeichers dann ein Doppelpunkt und dann gibst du den Typ an. Integer speichert zum Beispiel Ganzzahlen mit Vorzeichen und string eine Zeichenkette und Extended eine Fließkommazahl. Für weitere Infos zu den Datentypen empfehle ich ein Tutorial (siehe ![]() Danach kannst du jeder Zeit mit der Zuweisung einen Wert zuweisen (<name> := <neuer wert>). Wenn man den Wert bekommen will, einfach hinschreiben und dann damit arbeiten. Aber ich denke da solltest du erstmal ein Tutorial lesen. MfG Fabian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz