Announcement

Collapse
No announcement yet.

Rechner erstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rechner erstellen

    Hey.
    Ich bin gerade dabei mir Java anzueignen und habe dabei ein großes Problem mit einer Aufgabenstellung. Kann mir da jemand helfen.
    Ich hefte mal die Aufgabe ran.

    Aufgabe:

    Schreiben Sie ein Programm „Auswertung“, das zulässige, geklammerte Ausdrücke einliest und berechnet, wobei zulässige Ausdrücke wie folgt aufgebaut sind:

    Die Eingabewerte sind ganzzahlig und der Ausdruck wird vollständig übergeben, d.h. als vollständige Zeile oder als Datei. Als Operatoren können + (Addition), - (Subtraktion), * (Multiplikation), / (ganzzahlige Division ohne Rest), und **2 ( Quadrierung ) auftreten, wobei die Operanden auch mathematisch geklammert sein können ( Klammersymbole ( oder ) ). Als Trennzeichen fungiert das Leerzeichen; eine Folge von Trennzeichen ist einem einzelnen Trennzeichen gleichwertig. Vor und hinter jedem Operator darf ein Trennzeichen stehen, braucht es aber nicht. Ein Zeilenende-Zeichen beendet einen Ausdruck.

    Das Programm erfüllt folgende Anforderungen/Funktionen:

    Lesen und Berechnung werden wiederholt, bis das Dateiende-Zeichen erreicht wird. Die Umleitung der Eingabe in eine Datei ist möglich, d.h. Dateien mit zulässig geklammerten Ausdrücken können zur Auswertung an das Programm übergeben werden.
    Das Programm sieht (mindestens) für folgende Fälle verschiedene Fehlermeldungen vor:
    Unzulässige Eingaben ( Aufgabe: welche unzulässigen Eingaben können entstehen ??? ).
    Bereichsüberschreitungen beim Rechnen.

    Schreiben Sie ein Programm „Prior“, das wie das Programm Auswertung zulässige, geklammerte Ausdrücke einliest und berechnet, was aber zusätzlich die folgende Klammereinsparungsregel realisiert:

    Man ordnet den Operatoren folgende Prioritäten zu:
    **2 geht vor * , /
    * , / geht vor + , -

    Alle anderen Rahmenbedingungen gelten analog zu Programm „Auswertung“, insbesondere Fehlermeldungen.
    Schreiben Sie ein Programm „UPN“, das zulässige, geklammerte Ausdrücke einliest und diesen Ausdruck in umgekehrte polnische Notation ( UPN ) übersetzt.

    Die Eingabewerte können ganze Zahlen und auch Buchstaben ( keine Umlaute ) sein. Ein Ausdruck wird vollständig übergeben, d.h. als vollständige Zeile oder als Datei.
    Als Operatoren können + (Addition), - (Subtraktion), * (Multiplikation), und / (Division) auftreten, wobei die Operanden auch mathematisch geklammert sein können ( Klammersymbol ( oder ) ). Als Trennzeichen fungiert das Leerzeichen; eine Folge von Trennzeichen ist einem einzelnen Trennzeichen gleichwertig. Vor und hinter jedem Operator darf ein Trennzeichen stehen, braucht es aber nicht. Ein Zeilenende-Zeichen beendet einen Ausdruck. Alle anderen Rahmenbedingungen gelten analog zu Programm „Auswertung“, insbesondere Fehlermeldungen.

    Leider weiß ich zum Compilerbau nicht so viel. Vielleicht gibt es aber jemanden hier, der das drauf hat.

    Mit freundlichen Gruß

    Danny

  • #2
    Hallo Danny,
    erzeuge eine Klasse:
    <pre>
    public class Auswertung {
    public static void main(String[] args){
    String meinAusdruck="";
    }
    }</pre>
    Compiliere den Quellcode, wechsel in das Verzeichnis, wo die Datei Auswertung.class liegt. Mit einem Aufruf z.B.<pre>java Auswertung "(2 + 3) * 5"</pre>
    hast Du Deine Rechenoperation in das Programm übergeben und kannst in der main-Methode über args[0] darauf zugreifen.

    Dateien kannst Du über die Klasse java.io.FileReader einlesen. Die stellt Dir eine Methode readLine() zur Verfügung, mit der Du die Ausdrücke zeilenweise einlesen kannst.
    Das Ergebnis des Einlesens weist Du einem String zu. Wenn dieser "null" (null heißt sozusagen nicht vorhanden, nicht zu verwechseln mit leer) ist, hast Du das Dateiende erreicht.

    Mit den Methoden der Strings (z.B. hier meinAusdruck.xxxx) kannst Du Leerzeichen entfernen, die Operatoren und Operanden heraussuchen usw.

    Die Logik programmierst Du dann bitte selbst. Das Forum ist schließlich kein Hausaufgabenabschreibeservice für faule Schüler/Studenten, gelle )

    P.S. Das Programm hat nicht das geringste mit Compilerbau zu tu
    http://www.winfonet.eu

    Comment

    Working...
    X