Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Aufgaben lösen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 31.08.2008, 11:34    Titel: Aufgaben lösen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 31.08.2008, 11:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 31.08.2008, 11:57    Titel: Antworten mit Zitat

Danke!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 01.09.2008, 14:22    Titel: Antworten mit Zitat

Kann man FBEval.bas auch in VB. net 2008 implementieren (DLL?)
Denn ich brauche das für beide (FB und VB)...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.09.2008, 14:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 01.09.2008, 14:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.09.2008, 14:47    Titel: Antworten mit Zitat

hast du damit nicth deine frage selber beantwortet? Zunge rausstrecken
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 01.09.2008, 15:08    Titel: Antworten mit Zitat

Also eine Eval funktion von .net Framework, gibt es bei VB nicht (wenn ja, wo?)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.09.2008, 15:22    Titel: Antworten mit Zitat

ich habe vs .net nie benutzt. aber googlen kann ich happy
.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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 01.09.2008, 15:45    Titel: Antworten mit Zitat

Ja, aber da mus man ja angemeldet sein...
Egal, dann melde ich mich einfach an zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.09.2008, 16:48    Titel: Antworten mit Zitat

http://www.bugmenot.com/view/codeproject.com mit den Augen rollen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 03.09.2008, 05:18    Titel: Antworten mit Zitat

ohne dass ich mir irgendwelche links angeschaut habe, aber:
das macht man doch selber zwinkern

sooo schwer ist das nu auch wieder nicht happy

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 happy) 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 lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 12.09.2008, 11:31    Titel: Antworten mit Zitat

Ich habe da noch eine Frage...
Was mache ich wenn die Aufgabe folgendermaßen aussieht:
-1 - 1 - -1 + -1
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 12.09.2008, 12:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 12.09.2008, 12:13    Titel: Antworten mit Zitat

Ja, habe damit angefangen es selbst zu schreiben.
Nun wollte ich die Funktion schreiben, die die beiden Operanden eines Operators zurückgibt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 12.09.2008, 12:39    Titel: Antworten mit Zitat

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)

  1. Zerlegung in die einzelnen Klammerterme
  2. Zerlegung nach Rechenzeichen: erst Plus/Minus, dann Mal/Geteilt, dann Potenz
  3. 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
Benutzer-Profile anzeigen Private Nachricht senden
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 12.09.2008, 12:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 12.09.2008, 12:55    Titel: Antworten mit Zitat

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. zwinkern

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
Benutzer-Profile anzeigen Private Nachricht senden
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 12.09.2008, 13:45    Titel: Antworten mit Zitat

Danke!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz