| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jan 2011
Beiträge: 4
|
Guten Abend, ich bin dabei einen Taschenrechner zu programmieren und bin auf ein Problem gestossen, bei dem mir leider keiner Helfen konnte, deswegen will ichs mal hier versuchen. Das Problem ist, dass der Taschenrechner zwei Anzeigen haben soll. In der oberen wird die Gleichung stehen (z.B.: 2+3+5-6) und in der unteren Anzeige das Ergebnis. Das Problem ist, wie programmiere ich mit AS so, dass er den übernommenen Array nach mehreren Determinanten splitet, dass ich erstmal die einzelnen Werte irgendwelchen Variablen zuordne und das zweite Problem ist, wie finde ich dann herraus, ob die zwei Werte + oder - genommen wurden. Und damit das ganze noch lustiger wird, möchte ich auch eine Klammer einbauen. In dem Anhang findet man die .fla-Datei bis zu dem Punkt, zu dem ich gekommen bin. Vielleicht könnte mir jemand mit paar Tips oder Ideen weiterhelfen. Vielen Dank |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.325
| H.G.Seib -> String_calculator function fCalc("2+3*4^5"); so z.b. das teil ist uralt, deshalb darfst du das als (schlechte) vorlage verwenden um es besser neu zu programmieren ;-) auch ganz interessant, suche: symbolisch rechnen http://www.informatik.uni-leipzig.de...ipte/esr06.pdf und suche: flash formel parsen
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (10-01-2011 um 17:36 Uhr) |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.325
|
das ist flash5 und geht wohl nicht mehr mit neueren flash-versionen. naja, vielleicht den script ansehen geht noch. aber öffentlich zeigen will ich den script nicht (jugendsünde) ;-)))
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Jan 2011
Beiträge: 4
|
Jetzt treten bei mir die ersten Fragen auf zu der Funktion. function fCalc(vForm) { gCalcN = 0; gCalc = vForm+((vForm.charAt(vForm.length-1) != "=") ? "=" : ""); return fCalcIt(); } Damit fängt ja das ganze an. Ich habe das jetzt so verstanden, dass man ein Array in die Variable vForm einfügt. (z.b.: "2+3") Dann wird eine neue Variable erstellt => die Gleichung wird 0 gesetzt (was da in Klammern passiert keine Ahnung, aber tut nichts zur Sache) Die Funktion startet eine andere Funktion fCalcIt(); Und die ganze fCalcIt()-Funktion ist mir bisschen zu komplex bzw. zu groß, dass ich da alleine durchblicke. Am Ende wird aber vLZ zurückgegeben und so wie ich das jetzt verstanden habe, müsste drinnen dann das endgülte Ergebnis vorliegen, was aber nicht der Fall ist. Wenn ich am Ende des Programm trace(vLZ) schreibe, kommt undefined raus. Was habe ich jetzt falsch verstanden? Geändert von mximy (10-01-2011 um 18:24 Uhr) |
| | |
| | #7 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.325
|
soso ;-) soviel also zum thema: "Anspruchsvoller Taschenrechner für Anspruchsvolle "grundsätzlich ist das so: du zerlegst das ganze in terme und baust einen strukturbaum auf nach den rechenregeln: punkt geht vor strich Code: 4*7+5*8
also ganz einfach gehalten:
+
/ \
* *
/ \ / \
4 7 5 8
zuerst bei plus bzw. minus trennen
die reste bei mal bzw. geteilt trennen
bis nur noch zahlen übrig bleiben
dann den baum zusammenrechnen
+
/ \
28 40
und
68
habs nicht nachgerechnet ;-)
wenn später noch klammer dazukommen, dann gibts mehr verschachtelungen.
wobei ein klammerinhalt wie eine eigenständige formel zu berechnen ist. stichwort: rekursiv dann um aus der formel zahlen zu extrahieren kannst du den string zeichen für zeichen abarbeiten. kommt ein rechenzeichen, dann ist eine zahl fertig und eine neue beginnt kommt eine ziffer, dann gehört die zu der zahl dazu 123+456 aktuelle zahl ist 0 jetzt kommt eine 1, also die aktuelle zahl *10 plus diese ziffer macht 0*10+1 = 1 jetzt kommt eine 2, also die aktuelle zahl *10 plus diese ziffer macht 1*10+2 = 12 jetzt kommt eine 3, also die aktuelle zahl *10 plus diese ziffer macht 12*10+3 = 123 jetzt kommt ein rechenzeichen, somit ist die erste zahl komplett ... wenn's dir immer noch zu schwer ist, dann programmiere vielleicht einen UPN-rechner suche mal im internet nach: umgekehrte polnische notation http://de.wikipedia.org/wiki/Umgekeh...ische_Notation
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (11-01-2011 um 09:55 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Flash 5] anspruchsvolle Raumplanung mit Flash realisierbar? | julia29 | Flash Einsteiger | 6 | 20-04-2010 11:57 |
| taschenrechner | beetlejuice® | ActionScript 1 | 2 | 18-08-2005 14:49 |
| Taschenrechner Tutorial | Prose | ActionScript 1 | 4 | 31-03-2005 16:54 |
| Taschenrechner | Morpheus00 | ActionScript 1 | 2 | 29-11-2004 18:06 |
| Taschenrechner | indy2 | Flash 4 und Flash 5 | 5 | 11-11-2001 09:52 |