Autor Beitrag
lara
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Sa 27.03.04 21:37 
Hi,
Ich hoffe ihr könnt mir langsam helfen auf meinem langen Weg.Ich hab ne Aufgabe die ich mit Hilfe von Delphi lösen möchte allerdings bin ich noch kein Genie da ich Delphi lange her ist und ich eher mit Java
progarmmiere.


Hier die Aufgabe:

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

So denk mal so ne Aufageb ist nicht ganz neu aber seh ich das richtig:
das zulässig dieser ausdruck ist (3+3*(4-1))
aber ist auch dier ausdruck zulässig 3+3*(4-1)?
Es ist doch nicht Plicht das die Zeile mit ner Klammer beginnt sondern nur das die Klmmern richtig gesezt sind oder?

2. Die Eingabewerte sind ganzzahlig und der Ausdruck wird vollständig übergeben, d.h. als vollständige Zeile oder als Datei

Wie hab ich das zu verstehen.Das ich z.B.ein edit feld mache in der ich nen ausdruck eingeb und dann noch nen edit feld wo ich z.b. nen dateinamen eingeb in der dann ausdrücke stehen?

3.so zu tehoretischen überlegung.zuerst muss ich doch prüfen ob die klammern richtig sind und dan ventuelle leerzeichen rausmachen.
danach müßt ich dann irgendwie mir überlegen wie er nen poetenz(**) erkennt was heißt das er immer 2 Zeichen vorraus prüfen muss.
Ich hab mich belesen und die polnische notation gefunden.ist das der richtigen ansatz?

4. ich hab jetzt nen Prokejkt angelegt mit nem edit wo man den ausdruck eingeben kann und einen button rechnen.kann man das so amchen da diese aufgabe ja letztendlich einen compiler symbolisiert und ich nicht weiß ob es dafür richtilinien gibt.

Ich hoffe ihr könnt mir weiterhelfen das ich diese aufgabe erfolgreich schaffe und vorallem auch ne Menge lerne und habt geduld.
Vielen Dank im voraus.

MFG LARA

Moderiert von user profile iconPeter Lustig: Topic verschoben


Zuletzt bearbeitet von lara am So 28.03.04 00:52, insgesamt 4-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 27.03.04 21:52 
Hallo!

Bitte ändere den Titel des Topics da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Delphi-Forum.de Richtlinien:

Richtlinien hat folgendes geschrieben:

1.1 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]

Einfach oben bei deinem ersten Beitrag auf "Edit" klicken und den Titel ändern. Dank Dir!

Gruß Peter Lustig

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Mo 29.03.04 12:34 
:welcome: im DF!

Ist ja richtig komplex :)

Also erstmal unnötige Leerzeichen kannst du wie folgt entfernen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
var
  ausdruck: String;

ausdruck := StringReplace(Edit1.Text, ' ''', [rfReplaceAll, rfIgnoreCase])


In der Variable ausdruck steht nun der Gesamte inhalt von Edit1 aber ohne Leerzeichen...

Potenzen könntest du, wenn du nciht auf ein zeichen im voraus prüfen möchtest auch in ein zeichen umwandeln, z.B. #.

So weist du dann wenn du den ausdruck prüfst und auf ein # stöst, das eine potenz zu machen ist..

ausblenden Delphi-Quelltext
1:
ausdruck := StringReplace(ausdruck, '**''#', [rfReplaceAll, rfIgnoreCase])					

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce


Zuletzt bearbeitet von Chatfix am Mo 29.03.04 12:38, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 29.03.04 12:36 
Hallo!

Du kannst Dir auch mal meinen Math-Parser in den Open Source - Units anschauen. Der kann fast genau das, was Du brauchst. Musst ihn nur ein wenig umgestalten.

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".