Andy1987 Geschrieben 12. November 2007 Geschrieben 12. November 2007 Hallo, ich muss in der Schule ein Projekt machen, habe mich dazu entschieden einen Taschenrechner zu machen. Soweit funktioniert auch mit den Grundrechenarten. Nun habe ich allerdings ein Problem wo ich nicht weiter komme. Hoffe ihr versteht was ich möchte. Also es sieht wie folgt aus. Habe 2 Variablen wo zwischenzahlen abgelegt werden. Wenn ich eine Zahl eingebe, und dann z.B. auf Plus klicke, schaut er ob V1 oder V2 (V = Variable) schon einen Wert außer 0 haben und legt sie dann in der beiden ab. Nun rechnet er beide Zahlen zusammen in die Variable ergebnis. Wenn ich nun Erneut zum Beispiel auf das Plus klicke soll das dann Ergebnis ausgeben. Nun kommt das Problem. Sobald eine neue Zahleneingabe stattfinden soll er mein Zahlenfeld löschen. Wie kann ich das realisieren. Glaub das es nicht so schwer ist aber bin wahrlich kein guter Programmierer. Hoffe ihr könnt mir helfen. Vielen Dank im Vorraus. Zitieren
flashpixx Geschrieben 12. November 2007 Geschrieben 12. November 2007 Hallo, also ich stehe da grade etwas auf dem Schlauch: Ist das jetzt ein Problem von der GUI, oder ein Problem wo Du in welchen Variablen das Ergebnis speicherst? Noch ein kleiner Tipp: Kommt denn auch das Ergebnis 0+0=0 raus? Denn Du schreibst ja, dass Du nur in die Variablen das Ergebnis schreibst, wenn sie == 0 sind, oder meintest Du == null? Wenn ich die Logik Deine Rechners verstanden habe while true if $ergebnis == null $zahl1 = read; else $zahl1 = $ergebnis; $operator = read; $zahl2 = read; case $operator of + : $ergebnis = $zahl1 + $zahl2; - * / write $ergebnis [/PHP] Ein kleiner Tipp, falls Du noch Klammern usw auswerten musst: cf-Grammatiken mit Präfixnotation und Ableitungsbäume HTH Phil Zitieren
Andy1987 Geschrieben 12. November 2007 Autor Geschrieben 12. November 2007 Ja mein Problem ist der quelltext, weiß nicht wie ich das machen kann. Wenn es dir hilft hilft kann ich dir ja mal von einem Button mal den Text schicken. Für alle anderen ich Probiere es nochmal zu erklären. ich gebe die zahl 44 ein, dann schaut er auf meine Variable Zwischenspeicher1 ob der Wert gleich 0 ist, wenn er das ist setzt er die 44 da rein, wenn nicht nimmt er Zwischenspeicher2 als Variable. Jetzt rechnet er beide zusammen in Variable Ergebnis. Dann sag ich noch Zwischenspeicher1 = Ergebnis. Wenn ich auf mein gleich-Button klicke soll er es ausgeben. Das klappt auch. So wenn ich nun aber nicht auf Gleich klicke sondern weiter rechnen möchte, also sprich ein weiteres mal auf plus klicke, soll er das aktuelle ergebnis anzeigen, solange bis ich eine zahleneingabe mache. davor muss aber das Textfeld geleert werden. Mein Problem ist das ich nicht weiß, wie ich das ergebnis anzeige und er solange wartet mit dem löschen des Textfeldes bis eine Zahleneingabe kommt. Hallo, also ich stehe da grade etwas auf dem Schlauch: Ist das jetzt ein Problem von der GUI, oder ein Problem wo Du in welchen Variablen das Ergebnis speicherst? Noch ein kleiner Tipp: Kommt denn auch das Ergebnis 0+0=0 raus? Denn Du schreibst ja, dass Du nur in die Variablen das Ergebnis schreibst, wenn sie == 0 sind, oder meintest Du == null? Wenn ich die Logik Deine Rechners verstanden habe PHP-Code: while true if $ergebnis == null $zahl1 = read; else $zahl1 = $ergebnis; $operator = read; $zahl2 = read; case $operator of + : $ergebnis = $zahl1 + $zahl2; - * / write $ergebnis Ein kleiner Tipp, falls Du noch Klammern usw auswerten musst: cf-Grammatiken mit Präfixnotation und Ableitungsbäume HTH Phil Zitieren
flashpixx Geschrieben 12. November 2007 Geschrieben 12. November 2007 Hallo, ich hatte Dir in Pseudocode grob den Ablauf skizziert. Statt dem "read" setzt Du dort ein "meinTextfeld.value". Nach jeder Operation kannst Du ja dann "meinTextfeld.value = ergebnis" setzen und sobald Du den Operator betätigst "meinTextfeld.clear" machen. Deine Erklärung ist nicht leicht zu verstehen, aber grundsätzlich solltest Du Programmlogik von GUI-Logik trennen, d.h. Deine Formelemente reichen ihren Inhalt, nachdem Du diesen auf Korrektheit geprüft hast, an Variablen weiter, ebenso setzt Du die Werte erst in die Form, nachdem Du sie berechnet hast. Der Pseudocode zeigt den zeigt den Ablauf für die Berechnungslogik, so dass Du diesen in eine eigene Methode zusammen fassen musst und dann nur noch mit dem Formvariablen füllen musst z.B. function berechne(a,b : Int, op : Char) : Variant { case (op) of + : return a+b; - : return a-b; * : return a*b; / : return (b != 0) ? a / b : null; end case return null; } [/PHP] Für den GUI Aufruf würde ich folgendes konstruieren: [PHP] class gui : function OpClick(op : Char) { int ergebnis = berechne(formfeld1.value, formfeld2.value, op); if ergebnis == null Messagebox ("Fehler bei der Berechnung") else formfeld1.value = formfeld3.value = ergebnis; formfeld2.value = 0; } Damit müsste es eigentlich funktionieren. Damit hast Du auch von der Anzeige immer einen gültigen Ausdruck, wobei zwar das Ergebnis doppelt angezeigt wird. Falls Du eben die ursprüngliche Rechnung angezeigt haben willst, dann merke Dir die Werte in Eigenschaften der Klasse und setze diese erst beim erneuten Click auf Deinen Operator um. Phil Zitieren
Andy1987 Geschrieben 13. November 2007 Autor Geschrieben 13. November 2007 Naja das Rechnen funktioniert schon. Also mein Problem ist folgendes: Wenn ich auf den Button Plus klicke, soll er mir in mein Textfeld das Ergebnis aus meinen beiden Variablen anzeigen. Sobald ich eine neue Zahl eingebe, soll er das Textfeld löschen sodass nur diese drin steht. Also muss das Programm ja solange stoppen bis eine neue Zahlen eingabe erfolgt. Mein Problem ist das ich nicht weiß ich das machen kann. Also beim Klartext soll es so aussehen. - Schau ob Zwischenspeicher1 = 0 wenn ja, Zwischenspeicher = Zahlenfeld, wenn nicht, Zwischenspeicher2 gleich Zahlenfeld. - Ergebnis = Zwischenspeicher1 + Zwischenspeicher2 - Zwischenspeicher = Ergebnis - Ausgabe von Ergebnis in Zahlenfeld So nun weiß ich nicht weiter. es wie folgt aussehen. - Sobald neue Zahlen eingabe erfolgt, lösche Zahlenfeld Anschließend will ich dann über meine Zahlenbutton eine neue Zahl eingeben. Zitieren
Andy1987 Geschrieben 13. November 2007 Autor Geschrieben 13. November 2007 Vielen dank, habe das Problem grade selber gelöst. War gar nicht so schwer eigentlich^^ Man musste nur drauf kommen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.