Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Taschenrechner





Frage

Hallo liebe Freunde des fröhlichen Programmierens :) Nach etlichen Stunden bin ich nun verzweifelt. Hab auch schon alles durchgegooglet. Folgendes Problem: Ich muss einen Taschenrechner programmieren mit dem ich x-beliebig viele Zahlen mit unterschiedlichen Rechenarten berechnen kann. Also nicht nur Zahl 1 + Zahl2. Mein Lösungsansatz: Zahlen und Rechenarten in einen String packen (1+2*3-5+10*2+8/10). So...dann bin ich schon auf die schlaue (?) Idee gekommen, dass man ja nach den Punktrechnungen suchen und den String abtrennen kann: s1= 1+ s2=2*3 ....usw Nun das Problem: 1. Ich hab keine Ahnung wie das geht *schäm* 2. Da ich keine Ahnung habe, viele kleine Strings dabei entstehen, muss es eine dynamische Varaible sein, habe keine Lust 255 Variablen zu deklarieren. 3. Das ganze muss dann auch noch vb.net sein :S Mir würde es auch schon helfen wenn es mir jemand "für Doofe" erklärt, ohne dabei auf VB.Net einzugehen. Bitte helft :´( P.S.: Wenn er fertig ist, kann er auch hexadezimale mit dualen Zahlen verrechnen *fg* Darauf hat die Welt gewartet...oder zumindest mein Lehrer....

Antwort 1 von Nhuya

Ok, andere Frage :)

Kann ich mit einem String rechnen? Also innerhalb des Strings?

Nehmen wir an ich hab einen String, der so aussieht:

1+2*3

Kann ich ihm nicht sagen, er soll das zusammenrechnen?

Antwort 2 von mr_x_hacker

Hi!

Also wenn so meinen Taschenrechner betrachte, kann man damit auch bel. viele Zahlen verarbeiten, aber nicht in _einem_ String, sondern nach dem Muster:
Zahl + Op + Zahl + Op (jetzt wird das Ergebnis der ersten 2 angezeigt!) + Zahl + Op (jetzt das mit der 3ten Zahl) ...

Es wird halt nach 2 Zahlen ein Ergebnis berechnet und dann die nächste eingegeben - bist Du sicher dass das bei Dir nicht reicht?

Falls nicht: Wie komplex wird der String denn? Was ist mit Punkt-vor-Strich? Sind Klammern erlaubt...? Ich kann kein vb-net, aber in Java z.B. gibts Methoden um durch einen String "durchzulaufen", also eine Schleife mit i von 0 bis "String-Länge(-1)" und dann immer string.charAt(i)
So kriegst Du bestimmte Zeichen bzw. kannst im String navigieren und nur die für Dich grade interessanten Zeichen in eine Variable packen und auswerten... so als ersten Vorschlag halt mal...

Dann gibts noch reguläre Ausdrücke, mit denen man das vermutlich in der "Realität" machen würde, aber k.a. wie das in vb geht, bzw. ob Du davon Ahnung hast :-)

Ciao Sascha

Antwort 3 von Nhuya

Wie du schon richtig erkannt hast, rechnet ein Taschenrechner (z.B. der von Windows) die ersten beiden Zahlen zusammen, dann diese mit der dritten usw.

ABER...diese Art berücksichtigt eben nicht die Punkt-Vor-Strich-Regel.

Ergo bleibt mir irgendwie nur die String-Methode (falls keiner nen besseren Vorschlag hat). Aber wie ich das genau umsetzte mit dem Auslesen, weiß ich eben nicht. Mir würds in Struktogrammform schon reichen :)

Antwort 4 von mr_x_hacker

also der Windows-Taschenrechner auf "Wissenschaftlich" berücksichtig die P.v.S.-Regel!:-)

Mach Dir mal Gedanken: Du hast ein bisheriges Erg. gespeichert (in x1)... nu kommt ein weiterer Op: ist es ein "Strich"-Op, mußt du den und die folgende Zahl extra speichern(in x2) und warten ob ein "Punkt"-Op kommt - wenn ja, rechnest Du das Erg. in x2 aus und das so lange bis wieder ein "Strich"-Op kommt... dann kannst das was bisher in x2 steht mit dem ebenfalls gespeicherten Strich-Op mit x1 berechnen und dort speichern...

Daraus kannst nu ein Struktogramm bauen :-)

Ciao Sascha

Antwort 5 von Nhuya

Ganz genau das hab ich auch schon versucht.....
und ich glaube dass das auch eine sehr gute Lösung ist, aber das Struktogramm wird so verworren, dass ich da selbst nicht mehr durchblicke :S

Antwort 6 von mr_x_hacker

ich geb zu, bin nicht der strukturierteste Programmierer - grade bei solchem "Kleinkram" schreib ich normal einfach Code, lass ihn was tun, guck wo er was falsches tut, und mach so lang rum bis es geht :-)

Natürlich kannst auch die Sache mit dem String machen, aber ich denke dafür wirds noch ein größeres Struktogramm geben... mußt dann immer merken in welchem "Status" ("Op gelesen", "Zahl gelesen", etc...) du grade bist - die Methode mit dem aktuellen Zwischenergebnis find ich überschaubarer...

Ciao Sascha

Antwort 7 von Nhuya

Ja da hast du Recht.
Aber ich komme an einer Stelle nicht weiter, fast am Ende. Viel zu kompliziert das hier z erklären, leider. Ka was ich da nun machen soll :(

Antwort 8 von mr_x_hacker

Du könntest den ganzen Algo mal auskommentieren und von vorne anfangen, mit dem besprochenen System im Kopf... vielleicht kommt dann was besseres raus, und allzulange sollte es auch nicht dauern, ist ja nicht grade der anspruchsvollste Algorithmus :-)

Antwort 9 von Nhuya

Das Sstem hab ich im Kopf, aber es will nicht raus und in den PC.... ich arbeite dran :) Und es wird fertig, koste es, was es wolle ;)

Antwort 10 von thomas_m

Wie ist der Stand?