JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=244da270093ce0f2f5e0e28097adccf5Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Formel umstellen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Plasmarain
Mini JLI'ler



Anmeldedatum: 21.11.2003
Beiträge: 37

Medaillen: Keine

BeitragVerfasst am: 01.02.2004, 11:54    Titel: Formel umstellen Antworten mit Zitat

Hallo,

ich bin mal wieder auf ein Problem gestoßen und zwar habe ich eine Formel, und muß die öfter mal umstellen.

jetzt habe ich das versucht über switch und in jedem case die formel anders umgestellt hinengeschrieben. Dann brauche ich nurnoch auswählen welches case ich brauche.

Wenn die Formel aber umständlicher wird oder ich brauche mehrer Formeln dann ist mein Programm voller switch anweisungen...
Noch schlimmer wenn der benutzer z.B. eine Funktion eingibt, die ich ja nicht kenne, dann geht auch das mit der switch anweisung nicht mehr...

Kann man bei C++ mit Buchstaben rechnen?

Beispiel:

v = s / t |*t
v * t = s

Oder der Benutzer gibt volgenden String ein:

y = x^2 + 3

Das muß man doch auswerten können, ich habe mir gedacht, y= in einem statischen Textfeld vorgeben und dann nur den teil rechts daneben auswerten. ok das geht wohl nur wenn ich dann nach x umstellen will stoße ich wieder auf das Problem nicht mit Buchstaben rechnen zu können...

Hat da wer eine Idee?

MFG

Matthias
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 01.02.2004, 11:59    Titel: Re: Formel umstellen Antworten mit Zitat

Plasmarain hat Folgendes geschrieben:
Kann man bei C++ mit Buchstaben rechnen?


Nun mit Variablen halt, wie in der Mathematik auch. Allerdings nicht ganz so leicht. Man kann z.B. nich einfach y = x^2 + 3 schreiben, sondern:

Code:
y = pow(2, x) + 3
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 01.02.2004, 12:26    Titel: Antworten mit Zitat

Du könntest mal nach Programmen (ASCII kein ASM) für Casio oder Texas Instruments Rechner diese bieten dafür Programme an. Die kann man relativ leicht für C oder ähnliches umstellen.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Plasmarain
Mini JLI'ler



Anmeldedatum: 21.11.2003
Beiträge: 37

Medaillen: Keine

BeitragVerfasst am: 01.02.2004, 12:40    Titel: Antworten mit Zitat

@Vision

Hi Vision, du hast mich etwas falsch verstanden, wenn ich in den Variablen zahlen habe und wie in diesem Fall

y = pow(2, x) +3

habe und y ausrechnen will ist das kein Problem aber wenn ich jetzt y habe und x ausrechen will... Dann muß ich die Formel amstellen.

@Fallen

Hi Fallen, du meinst diese programmierbaren Taschenrechner? Ja mal sehen, das könnte sein, ich werde gleich mal versuchen was bei Google zu finden...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 01.02.2004, 13:47    Titel: Antworten mit Zitat

Ein viel großeres Problem ist es, einen eingegebenen String zu parsen.
Man muss die ganze rechnung in einen Binärbaum zerlegen, das kann recht kompliziert werden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Plasmarain
Mini JLI'ler



Anmeldedatum: 21.11.2003
Beiträge: 37

Medaillen: Keine

BeitragVerfasst am: 02.02.2004, 19:15    Titel: Antworten mit Zitat

Ja ich weiß noch nicht ob es geht aber ich dachte mir das so:

Der Benutzer gibt z.B. ein (jetzt mal ganz leicht anfangen)

200+300

Das sähe dann ja so aus:

"200+300\0"

jetzt untersuchen (mal sehen wie) was Zahl ist und was nicht und dann aufspalten:

"200\0" '+' "300\0"

IntToStr("200\0");

und so weiter, ich muß mir noch überlegen wie ich die Auswahl gestalte.

Hat jemand eine bessere Idee oder kann mir sagendas es nicht geht?
Dann macht das bitte ruhig.

MFG

Matthias
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 02.02.2004, 20:45    Titel: Antworten mit Zitat

nun möglich ist alles doch musst du nun auch unterscheiden das 200-100
so aufgesplittet werden kann 200 -100 parsen ist eben eine kleine Wissenschaft für sich. Besonders wenn es dann zu komplizierteren Aufgaben kommen sollte: 200-100*50/(1000*2-10) oder so was ähnliches.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 02.02.2004, 21:05    Titel: Antworten mit Zitat

dazu sind brauchst du auf jeden fall eine baumstruktur. Sonst lassen sich die Klammer und *vor- regeln nur sehr schwer umsetzen. Dazu dann eine Rekursive Funktion, die den baum durchgeht und das ergebnis ausrechnet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 03.02.2004, 14:49    Titel: Antworten mit Zitat

Ich bin gerade dabei, genau solch einen Mathematikparser zu Programmieren.
Ich habe mich schon spezieller damit auseinandergesetzt - Ziel der ganzen Aktion ist es sogar so weit zu gehen, dass ich als Eingabestring eine Formel berechnen kann, wie sie z.B. in Excel eingegeben werden kann, also auch mit Funktionen und Verweisen...
Die Binärbaumstruktur steht bei mir schon, ich bin gerade am Parser basteln, also der Schritt, der den Binärbaum aus dem EIngabestring erzeugt. Ist der Binärbaum erst mal erstellt, kann ich ihn bereits ausrechnen lassen. (PS.: Ich programmiere das in Ansi-C, es könnte gewisse Probleme geben, wenn man das in eine C++-Umgebung einbettet - da ich bisher nicht auf C++-Speziefische Regeln geachtet habe.)
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 03.02.2004, 14:51    Titel: Antworten mit Zitat

ich programmiere das gerade mit einem freund ich Java, wobei ich mich zZ um das Interface kümmer.. (irgendwas halbwegs vernünftiges muss man ja im Info Unterricht programmieren)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 03.02.2004, 22:08    Titel: Antworten mit Zitat

Hier eine Lösung, die ich heute Abend (Arbeit: Knapp 3 Stunden) für C# programmiert habe.
Sie beachtet Punkt-Vor-Strichrechnung sowie Klammerung und funktioniert für Strings, in denen die vier Grundrechenarten vorkommen, also z.B. für "-2-(6-4)*3+-2*3"
Beachtet auch die gleichzeitige Verwendung von Rechen- und Vorzeichen

Code:

// Code entfernt, da bei einigen Konstellationen Rechenfehler auftraten. (falsche Parserreihnfolge)


Würde gerne mal Eure Meinung dazu wissen.
Falls gewünscht, kann ich diese Funktion auch für C umschreiben, dann sind allerdings eine Reihe von String-Hilfs-Funktionen Notwendig...

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}


Zuletzt bearbeitet von AFE-GmdG am 04.02.2004, 15:11, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 03.02.2004, 22:44    Titel: Antworten mit Zitat

Wenn du willst kann ich dir mal meinen Paser geben damit du mal vergleichen kannst. (Ich habe noch Funktionssupport)
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Plasmarain
Mini JLI'ler



Anmeldedatum: 21.11.2003
Beiträge: 37

Medaillen: Keine

BeitragVerfasst am: 04.02.2004, 21:50    Titel: Antworten mit Zitat

So da bin ich mal wieder, gut zu sehen das ich mit der Idee nicht ganz alleine da stehe...

Das mit der Baumstruktur ist mir noch nicht ganz klar, kann man das system irgentwo "nachlesen" ? hat wer eine Internetseite?

MFG

Matthias
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
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.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum