Zum Inhalt springen

Taschenrechner Projekt


Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...