Zum Inhalt springen

termzerlegung


azett

Empfohlene Beiträge

nabend!

"ich hätt da gern ma ein problem."

sachlage:

ein programm fordert als eingabe einen mathematischen term als string. der term kann auch geklammert sein. ausgegeben werden soll dann das korrekte ergebnis des terms.

beispiel:

eingabe (1+2)*(1+(15-5)/5)

ausgabe 9

idee:

vor der eigentlichen berechnung zunächst überprüfen, ob der string überhaupt einen korrekten term enthält (nur klammern, zahlen und operatoren? term-syntax korrekt?). dann den term zerlegen und berechnen.

problem:

die klammer-erkennung während der term-überprüfung. ich will nicht nur überprüfen, daß die anzahl der öffnenden und schließenden klammern gleich ist (was bei einem korrekten term natürlich so ist), sondern auch, ob diese syntaktisch richtig stehen. die klammern können aber ineinandergeschachtelt sein und/oder nacheinander stehen - und dazu fällt mir trotz vieler versuche und überlegungen kein allgemeiner algorithmus ein.

hat jemand ne zündende idee, wie ich die klammerung des terms auf korrektheit checken kann? ich bräuchte nur nen kleinen indikator für die grauen zellen...nicht mehr :)

merci und eine schicke woche..

..azett

Link zu diesem Kommentar
Auf anderen Seiten teilen

nabend!

sachlage:

ein programm fordert als eingabe einen mathematischen term als string. der term kann auch geklammert sein. ausgegeben werden soll dann das korrekte ergebnis des terms.

beispiel:

eingabe (1+2)*(1+(15-5)/5)

ausgabe 9

Servus!

Ich stand vor einiger Zeit vor dem gleichen Problem.

Wenn du für dein Programm nur das Ergebnis des Terms benötigst und du mit einer Datenbank verbunden bist, könntest du auch folgendermaßen vorgehn.

Bei dem SQL Statement

"SELECT (1+2)*(1+(15-5)/5) erg FROM DUAL"

erhältst du bei einer Oracle Datenbank erg = 9.

Bei einer SQL Datenbank dürfte es folgendermaßen funktionieren:

"SELECT (1+2)*(1+(15-5)/5) erg"

Vielleicht hilft dir das ja auch weiter :)

Nixaja

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei dem SQL Statement

"SELECT (1+2)*(1+(15-5)/5) erg FROM DUAL"

erhältst du bei einer Oracle Datenbank erg = 9.

hehe..."um den termrechner nutzen zu können, installieren sie bitte zunächst Oracle 9i." :D

danke für den tip...is tricky um die ecke gedacht, aber das programm sollte im kB-bereich bleiben (und vor allem will ich die berechnung ja selbst schreiben) ;)

klotzkopp hat mich betreffs validitätsprüfung auf den richtigen pfad gebracht (denk ich mal ;) ) - merci! :) und was die eigentliche termberechnung angeht: die krieg ich dann bestimmt auch hin...und wenn nicht, schwatzmer nochmal drüber :)

merci sagt..

..der azett

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich trenn termvalidierung und berechnung. zunächst werden die zeichen überprüft, dann, ob die anzahl der öffnenden und schließenden klammern gleich ist und zum schluß, wie die zeichen zueinander stehen (z.b. ob zwei operatoren aufeinander folgen). wenn das alles hinhaut, findet die berechnung statt. is zwar performancemäßig nicht das optimum, aber es hält die sache ungemein übersichtlich ;) wenn ich den rest fertig hab, kann man da ja mal über ne optimierung nachdenken.

[erfolgserlebnis] geklammerte terme zerlegt er mir jetzt schon hübsch in teilaufgaben und gibt auch brav das ergebnis aus [/erfolgserlebnis] - informatik is doch immer wieder was schönes :rolleyes:

jetzt muß ich ihm nur noch beibringen, daß man punkt vor strich rechnet ;)

schönen feierabend und sport frei..

..azett

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...