Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Servus,

google mal nach endlichen Automaten und Turingmaschinen. Einer dieser Automaten kann Sprachen erkennen, die Terme, wie Du sie hast, erkennen. Zumindest die Klammersetzung. Um die Korrektheit der zu berechnenden Ausdrücke musst Du Dich dann auch noch kümmern.

Peter

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

  • Autor

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

Wenn Du den Term ohnehin ausrechnen willst, musst Du wärend der Zerlegung doch ohnehin auf Korrektheit prüfen und kannst ggf. mit einem Fehler (z.B. unbekanntes Symbol, etc.) abbrechen.

  • Autor

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

Hallo,

je nach verwendeter Programmiersprache gibt es auch Tools, die diese Validierung und ggf. die Berechnung der Terms automatisch durchführen. Für C/C++ sind das beispielsweise flex und bison (lex und yacc).

Nic

  • Autor
je nach verwendeter Programmiersprache gibt es auch Tools, die diese Validierung und ggf. die Berechnung der Terms automatisch durchführen.

hm...selber schreiben is besser :rolleyes:

schönes wochenende allen :D

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.