Taschenrechner für mehrere Zahlen... (Divison?)
-
Hi,
wir haben als Dauer-Projekt in der Schule gerade die Aufgabe einen Taschenrecher zu erstellen... irgendwie ziemlich nervig.
Jedenfalls soll der Taschenrechner in etwa so wie ein häuslicher funktionieren. Man gibt eine Zahl ein, drückt einen Operator gibt noch ne Zahl ein und mit dem nächsten Operator wird das Ergebnis verrechnet und eine neue Zahl kann mit einem beliebigen Operator hinzugefügt werden, drückt man "Gleich" wird das Ergebnis angezeigt.Soweit ich das überblicke geht alles, bloß leider gibt es immer haarsträubende Fehler bei der Division. Wenn ich z.B. 12 / 2 + 4 rechne, sollte er ja eigentlich (12/2)+4 = 10 rechnen. Leider spuckt er dafür z.B. 7 aus...
Funktionen dieser Art:
void __fastcall TForm1::B_PlusClick(TObject *Sender) { if(Eingabe->Text!="") { if(acz==0) { alt=StrToFloat(Eingabe->Text); acz=1; B_Gleich->Enabled=true; } else { neu=StrToFloat(Eingabe->Text); switch(op) { case 1: StatusBar->SimpleText=FloatToStr(alt)+sop+FloatToStr(neu)+"="; alt=alt+neu; StatusBar->SimpleText=StatusBar->SimpleText+FloatToStr(alt)+"+ [...]"; break; case 2: StatusBar->SimpleText=FloatToStr(alt)+sop+FloatToStr(neu)+"="; alt=alt-neu; StatusBar->SimpleText=StatusBar->SimpleText+FloatToStr(alt)+"+ [...]"; break; case 3: StatusBar->SimpleText=FloatToStr(alt)+sop+FloatToStr(neu)+"="; alt=alt*neu; StatusBar->SimpleText=StatusBar->SimpleText+FloatToStr(alt)+"+ [...]"; break; case 4: if(neu!=0) { alt=alt/neu; StatusBar->SimpleText=FloatToStr(alt)+sop+FloatToStr(neu)+"="; alt=alt/neu; StatusBar->SimpleText=StatusBar->SimpleText+FloatToStr(alt)+"+ [...]"; break;} else {StatusBar->SimpleText="Division durch NULL nicht definiert"; } break; } } op=1; sop="+"; Eingabe->Text=""; }liegen auf den Buttons. (Die StatusBarSache darf getrost ignoriert werden).
Okay, genug der Worte am besten poste ich einfach das Programm

http://mitglied.lycos.de/grisonsarts/ensiferc.rarSchonmal Danke für etwaige Hilfe!
mfg
Ensifer
-
ehm du hast ein falsches projekt hochgeladen.. du brauchst noch:
Unit1.cpp Unit1.h calculator.h ..
-
Sorry, blicke da aber auch irgendwie nicht durch, bei den ganzen Dateien...
http://mitglied.lycos.de/grisonsarts/ensiferc.rar
hoffe es funzt jetzt.
(im übrigen greifen alle Operatoren-Buttons jetzt auf eine einzige Funktion zu, aber das sollte ja nichts zur Sache tun...)
-
Hat niemand einen Vorschlag?

-
Der Download funktioniert nach wie vor nicht (IE) oder resultiert in einer korrupten Datei (Firefox).
-
hier drin ist der Fehler:
case 4: if(neu!=0) { [b]alt=alt/neu;[/b] StatusBar->SimpleText=FloatToStr(alt)+sop+FloatToStr(neu)+"="; alt=alt/neu; StatusBar->SimpleText=StatusBar->SimpleText+FloatToStr(alt)+"+ [...]"; break;}der fette Teil muss raus, da du sonst alt 2mal durch neu teilst
durch Nutzung des Debuggers wärst du aber bestimmt auch selbst drauf gekommen ...

Grüße
Linnea
-
Oder durch sinnvolle Formatierung, d.h. jede Instruktion in eine eigene Zeile.
Ggf. hätte ich mir den Code dann auch mal durchgelesen.
-
Jansen schrieb:
Oder durch sinnvolle Formatierung, d.h. jede Instruktion in eine eigene Zeile.
Ggf. hätte ich mir den Code dann auch mal durchgelesen.
Oh gott^^ Danke
Mit Übersicht hatt ichs noch nie so^^ Eher mit Platzsparen.
Kann man nix machen, ist als Schwabe veranlagt...trotzdem danke.
-
Man muss Prioritäten setzen: entweder man spart Platz (Formatierung, Kommentare etc.) oder man spart Zeit und Nerven bei der Fehlersuche.
-
Letzteres ziehe ich liebend gerne vor.
