Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 31.08.2008, 11:34 Titel: Aufgaben lösen |
|
|
Hallo,
Ich habe ein Problem. Und zwar will ich Aufgaben (Strings) lösen, z. B. Code: | Aufgabe = "2 * (2 + 2) - 1.5" | Gibt es da irgendwelche Libs oder ähnliches, die soetwas können? |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 31.08.2008, 11:41 Titel: |
|
|
fbeval.bas ist gut, ich weiß im Moment nur nicht, wo das zu finden ist. Wenn du mein monopolz herunterladen willst, da liegt die Datei fbeval.bas ebenfalls bei. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 31.08.2008, 11:57 Titel: |
|
|
Danke! |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 01.09.2008, 14:22 Titel: |
|
|
Kann man FBEval.bas auch in VB. net 2008 implementieren (DLL?)
Denn ich brauche das für beide (FB und VB)... |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.09.2008, 14:26 Titel: |
|
|
warum probierst du's nicht einfach selber aus?! so viel wird man da nicht abändern müssen... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 01.09.2008, 14:32 Titel: |
|
|
Ja aber manches geht nicht, wie z.B. Code: | Type EvalFunction
Name As String
Wrapper As Function(argc As Integer, argv() As Double) As Double
End Type
| (und ich meinte nicht Type, sondern dieses Wrapper...) |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.09.2008, 14:47 Titel: |
|
|
hast du damit nicth deine frage selber beantwortet?
was du machen kannst...
1) aus dem teil eine DLL basteln
2) das .net-framework hat mit 99%iger wahrscheinlichkeit eine EVAL-Funktion, die genau das selbe macht. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 01.09.2008, 15:08 Titel: |
|
|
Also eine Eval funktion von .net Framework, gibt es bei VB nicht (wenn ja, wo?) |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.09.2008, 15:22 Titel: |
|
|
ich habe vs .net nie benutzt. aber googlen kann ich
.net wäre ja wirklich kümmerlich, wenn das nix in der art hätte, aber hier ein link, den ich bei google (suche nach ".net eval") gefunden hab:
http://www.codeproject.com/KB/dotnet/evaluator.aspx _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 01.09.2008, 15:45 Titel: |
|
|
Ja, aber da mus man ja angemeldet sein...
Egal, dann melde ich mich einfach an  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.09.2008, 16:48 Titel: |
|
|
http://www.bugmenot.com/view/codeproject.com  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 03.09.2008, 05:18 Titel: |
|
|
ohne dass ich mir irgendwelche links angeschaut habe, aber:
das macht man doch selber
sooo schwer ist das nu auch wieder nicht
edit: um den sinn dieses post etwas zu heben:
eig musst du nur erstmal alle klammernpaare raussuchen
dann mit den innersten anfangen, diee berechnen (wenn du faul bist lass das mit punkt vor strich sein, muss der user (oder dein programm ) halt n paar klammern mehr machen)... sollte nach dem schema zahl1 rechenzeichen zahl2 dastehen, dann gehts einfach... halt die beiden zahlen in variablen packen, und je nach rechenzeichen das ausrechnen. wenn eine klammer fertig ist, wird diese intern durch die errechnete zahl ersetzt, bis am ende nurnoch aufgabe = zahl dasteht
mfg flo _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 12.09.2008, 11:31 Titel: |
|
|
Ich habe da noch eine Frage...
Was mache ich wenn die Aufgabe folgendermaßen aussieht:
-1 - 1 - -1 + -1 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 12.09.2008, 12:03 Titel: |
|
|
Wenn du es selbst programmieren willst oder mit fbeval?
Mit fbeval sollte das einfach durch Eingabe dieses Ausdrucks funktionieren, oder du musst bei den negativen Vorzeichen Klammern setzen (was in der Mathematik übrigens korrekterweise gemacht werden muss! Du kannst nicht zwei Rechenzeichen aufeinanderprallen lassen!).
Also: -1 - 1 - (-1) + (-1) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 12.09.2008, 12:13 Titel: |
|
|
Ja, habe damit angefangen es selbst zu schreiben.
Nun wollte ich die Funktion schreiben, die die beiden Operanden eines Operators zurückgibt. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 12.09.2008, 12:39 Titel: |
|
|
Die doppelten Minus sind eigentlich nicht so das Problem (auch wenn ich hier die Klammersetzung erzwingen würde); schwieriger ist die richtige Umsetzung der Rechenreihenfolge. Mal so meine Gedanken dazu:
(die Reihenfolge entspricht der, die dein Programm am Ende abarbeiten muss; du kannst natürlich auch erst mal weiter unten anfangen und z. B. die Klammern erst später umsetzen)
- Zerlegung in die einzelnen Klammerterme
- Zerlegung nach Rechenzeichen: erst Plus/Minus, dann Mal/Geteilt, dann Potenz
- Rechenreihenfolge innerhalb derselben Rechenart von links nach rechts (also 5 - 3 - 2 = (5-3) - 2); könnte man durch eine Zerlegung in umgekehrter Richtung erreichen.
In deiner Rechnung ist es dann ein wenig vereinfacht, weil nur eine Rechenart vorkommt (ich nehme nur wegen der Anschaulichkeit verschiedene Zahlen):
-1 - 2 - (-3) + (-4)
erste Zerlegung: das hintere Plus => Addition der Terme -1 - 2 - (-3) und (-4)
Die Funktion prüft nun die beiden Summanden getrennt:
zweiter Summand (-4); Klammern können entfernt werden, die Zahl ist -4.
erster Summand -1 - 2 - (-3); dieser Term muss erst noch zerlegt werden. Er ist eine Differenz von -1 - 2 und (-3).
An dieser Stelle rufst du wieder deine Funktion auf (rekursiv), um dir das Ergebnis dieser Differenz berechnen zu lassen. Der zweiter Aufruf zerlegt dir dann - 1 - 2 usw. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 12.09.2008, 12:48 Titel: |
|
|
Wie ist das eigentlich mit der "Punktrechnung vor Strichrechnung" mit z.B. den Funktionen "Or", "And", ...
Was wird den da zuerst gerechnet er "Or" oder zuerst * und /? |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 12.09.2008, 12:55 Titel: |
|
|
Lässt sich leicht ausprobieren:
Code: | PRINT 2*3 AND 1
PRINT 2*(3 AND 1)
PRINT (2*3) AND 1 |
Ergebnisse 1 und 3 sind identisch, also ist das die Rechenreihenfolge.
Nachtrag: http://www.galileocomputing.de/openbook/einstieg_vb_2008/visual_basic_kap_02_002.htm enthält fast ganz unten die Vorrangregeln für Visual Basic; in FreeBASIC werden sie, denke ich, identisch sein. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 12.09.2008, 13:45 Titel: |
|
|
Danke!!! |
|
Nach oben |
|
 |
|