Fragen zum ersten Praktikum

bafnai
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 126
Registriert: 13. Apr 2011 06:36

Re: Fragen zum ersten Praktikum

Beitrag von bafnai » 16. Apr 2012 17:09

Zu einem andern Thema:
Muss man bei evaluateSimpleExpression mit findAddOrSubOperation und findMulOrDivOperation arbeiten, oder darf man auch einfach nach den entsprechenden Operatoren "per Hand" suchen?

genix
Windoof-User
Windoof-User
Beiträge: 39
Registriert: 16. Okt 2010 13:41

Re: Fragen zum ersten Praktikum

Beitrag von genix » 16. Apr 2012 17:55

Mich würde auch mal interessieren, was denn nun evaluateSimpleExpression() genau machen soll. Aus der Aufgabenstellung werde ich da irgendwie nicht so wirklich schlau.

Benutzeravatar
mmi1991
Computerversteher
Computerversteher
Beiträge: 349
Registriert: 20. Okt 2011 18:46
Wohnort: Hattersheim

Re: Fragen zum ersten Praktikum

Beitrag von mmi1991 » 16. Apr 2012 20:17

Also afaik laut Aufgabenstellung + Javadoc:
Im Prinzip soll er Ausdrücke wie
5+4*2-27
lösen können.
Laut JavaDoc sogar noch, wenn sich eine Klammer darum befindet:
(2*4+25)

Bei meiner (letztlich funktionierenden) Implementierung habe ich festgestellt, dass er bei mir auch bspw.
(3*4)+2
durch
12+2
ersetzen muss - aber das kann u. U. implementationsabhängig sein.
Ophasentutor SoSe 2014, WiSe 2015/16
Alle Angaben wie immer ohne Gewähr

Benutzeravatar
Domac
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 160
Registriert: 4. Okt 2010 16:11

Re: Fragen zum ersten Praktikum

Beitrag von Domac » 17. Apr 2012 08:38

Ist (→12→) auch ein zulässiger "atom"-Ausdruck?

EDIT: hat sich erledigt ^^
Extend my dropbox space (here).
Thanks!

fabian.wagner
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 152
Registriert: 19. Okt 2010 12:51

Re: Fragen zum ersten Praktikum

Beitrag von fabian.wagner » 17. Apr 2012 11:06

skY hat geschrieben:Ich habe es jetzt so gemacht, dass assembleNumbers nur die Zahlen nimmt, d.h. aus sowas wie 123.456 wird eben 123|.|456

Und bei assemblePoint wird ebenfalls alles zusammengefasst, nur eben die Gleitkommazahlen richtig. Bedeutet aus z.B. 1|2|+|3|.|4 wird dann komplett 12|+|3.4
eben komplett. Die Tests für Task1 laufen damit, sollte wohl okay sein. Oder soll es explizit so sein, dass PointNumbers nur die vorher falsch zusammengefügten Gleitkommazahlen richtig verwurstet?
NEIN, du hast es vollkommen richtig gemacht. :)

fabian.wagner
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 152
Registriert: 19. Okt 2010 12:51

Re: Fragen zum ersten Praktikum

Beitrag von fabian.wagner » 17. Apr 2012 11:14

bafnai hat geschrieben:Zu einem andern Thema:
Muss man bei evaluateSimpleExpression mit findAddOrSubOperation und findMulOrDivOperation arbeiten, oder darf man auch einfach nach den entsprechenden Operatoren "per Hand" suchen?
Die Aufgabenstellung liefert eine Strategie, die man verfolgen sollte. Es geht mit dieser wirklich sehr einfach und es wird so auch ebenfalls sehr einfach die normale Auswertungsreihenfolge mathematischer Ausdrücke berücksichtigt.

Ich verweiße mal auf einen vorigen Post von mir, vielleicht hilft dir der:
http://www.d120.de/forum/viewtopic.php?f=166&t=25199

fabian.wagner
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 152
Registriert: 19. Okt 2010 12:51

Re: Fragen zum ersten Praktikum

Beitrag von fabian.wagner » 17. Apr 2012 11:26

genix hat geschrieben:Mich würde auch mal interessieren, was denn nun evaluateSimpleExpression() genau machen soll. Aus der Aufgabenstellung werde ich da irgendwie nicht so wirklich schlau.
Die Methode soll genau das machen, was im JavaDoc steht...

Code: Alles auswählen

/**
	 * Evaluates a simple expression.
	 * @param begin
	 * 			represents the beginning of the simple expression. The method expects an opening parenthesis if there are any
	 * parentheses in the expression. Otherwise the begin must be the first left operand of the expression.
	 */
Die Methode bekommt ein MathElement übergeben, was den Beginn einer SimpleExpression repräsentiert. Dies ist entweder eine Klammer oder der erste Operand, der Simple Expression. Danach wertet die Funktion beginnend mit diesem MathElement nach und nach erst die Punktrechnungen und dann die Strichrechnungen aus. Später kommt dann noch eine Swap-Operation dazu, die höhere Priorität als Punktrechnungen hat. Natürlich darf die Funktion dann nur soweit auswerten bis eine schließende Klammer kommt oder bis der Ausdruck nur noch ein Atom ist.
Wie man dies begrenzt sollte man sich vorher überlegen. Es ist sinnvoll mit einer weiteren MathList zu arbeiten. Dann fallen auch weitere Probleme weg. KISS! (Keep it stupid simple! 8) )
Danach werden entsprechende Pointerersetzungen durchgeführt. Das heißt, falls die Simple Expression mit einer Klammer begonnen hat, fällt diese und ihr Gegenpart natürlich in der gesamt Expression weg!
Das wars!

skY
Erstie
Erstie
Beiträge: 20
Registriert: 21. Sep 2011 15:17

Re: Fragen zum ersten Praktikum

Beitrag von skY » 18. Apr 2012 16:40

So, wohl das letzte kleine Problemchen. Test von Task2 läuft nicht durch - ich blicke allerdings nicht woran es scheitert.

Also:
Ich hab ne kleine main() dazu geschrieben, da werden 6 Listen mit den 6 vorgegebenen Expressions erstellt und und nur evaluate() von jeder Liste aufgerufen. Die gewünschten Ergebnisse habe ich mir aus dem Test rausgesucht und sie mit dem verglichen, was am Ende so ausgespuckt wird - alle 6 stimmen.
Aber der Test wirft trotzdem noch einen Fehler, und zwar:
add(...) does not work correct in IntegerCalculator.
div(...) does not work correct in IntegerCalculator.

Aber das tut es doch offensichtlich, da ich die korrekten Ergebnisse rausbekomme.
Aber das Endergebnis stimmt dennoch.


Ich habe zwar eine Vermutung, aber die würde evt. zu viel spoilern. Und kommt mir etwas weit hergeholt vor. Vielleicht kann ich ja nem Tutor ne PN schicken? Interessiert mich gerade einfach brennend (brauche die Zulassung übrigens nichtmehr)

fabian.wagner
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 152
Registriert: 19. Okt 2010 12:51

Re: Fragen zum ersten Praktikum

Beitrag von fabian.wagner » 18. Apr 2012 18:05

skY hat geschrieben:So, wohl das letzte kleine Problemchen. Test von Task2 läuft nicht durch - ich blicke allerdings nicht woran es scheitert.

Also:
Ich hab ne kleine main() dazu geschrieben, da werden 6 Listen mit den 6 vorgegebenen Expressions erstellt und und nur evaluate() von jeder Liste aufgerufen. Die gewünschten Ergebnisse habe ich mir aus dem Test rausgesucht und sie mit dem verglichen, was am Ende so ausgespuckt wird - alle 6 stimmen.
Aber der Test wirft trotzdem noch einen Fehler, und zwar:
add(...) does not work correct in IntegerCalculator.
div(...) does not work correct in IntegerCalculator.

Aber das tut es doch offensichtlich, da ich die korrekten Ergebnisse rausbekomme.
Aber das Endergebnis stimmt dennoch.


Ich habe zwar eine Vermutung, aber die würde evt. zu viel spoilern. Und kommt mir etwas weit hergeholt vor. Vielleicht kann ich ja nem Tutor ne PN schicken? Interessiert mich gerade einfach brennend (brauche die Zulassung übrigens nichtmehr)
Schick mir mal deine Vermutung und die Tests. Ich werde mal drüber schauen...

Benutzeravatar
JannikV
Nerd
Nerd
Beiträge: 609
Registriert: 24. Apr 2011 12:42

Re: Fragen zum ersten Praktikum

Beitrag von JannikV » 18. Apr 2012 19:16

Hallo,

wird es zu Task 3 auch noch Tests geben? Wäre wohl nicht schlecht...

In jedem Fall wären aber auch noch weitere Informationen nützlich:

1) Wie sind function-names spezifiziert? Zuerst dachte ich ja dass ich nur alle Kleinbuchstaben die hintereinander vorkommen zu einem MathElement zusammenfassen muss, im Beispiel zu iii taucht dann aber auch eine Funktion mit Namen func2 auf.
Mein aktuelles Kriterium sieht wie folgt aus: Erstes Zeichen ist ein Kleinbuchstabe, danach wird alles zum Funktionsnamen gezählt bis '(' auftaucht. Ist das korrekt oder kann es auch Funktionen geben die mit Großbuchstaben beginnen? (Oder gar Funktionsnamen die nicht von '(' gefolgt werden weil sie keine Parameter benötigen.)

2) Bei Aufgabe iii: Sehe ich das im Beispiel richtig, dass in der übergebenen Liste bereits die Funktionsnamen am Stück sind, die Parameter samt Klammern aber einzeln und der Ausdruck dann wieder am Stück ist??

VG
Jannik

Tai
Mausschubser
Mausschubser
Beiträge: 52
Registriert: 6. Feb 2012 23:36

Re: Fragen zum ersten Praktikum

Beitrag von Tai » 18. Apr 2012 19:50

Hallo,

hab gesehen das hier ein aktiver Thread ist zum Thema Praktikum.

Könnte mir mal jemand evtl. die Frage beantworten :)
http://www.d120.de/forum/viewtopic.php?f=167&t=25241
danke :)

fabian.wagner
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 152
Registriert: 19. Okt 2010 12:51

Re: Fragen zum ersten Praktikum

Beitrag von fabian.wagner » 19. Apr 2012 11:28

JannikV hat geschrieben:Hallo,

wird es zu Task 3 auch noch Tests geben? Wäre wohl nicht schlecht...

In jedem Fall wären aber auch noch weitere Informationen nützlich:

1) Wie sind function-names spezifiziert? Zuerst dachte ich ja dass ich nur alle Kleinbuchstaben die hintereinander vorkommen zu einem MathElement zusammenfassen muss, im Beispiel zu iii taucht dann aber auch eine Funktion mit Namen func2 auf.
Mein aktuelles Kriterium sieht wie folgt aus: Erstes Zeichen ist ein Kleinbuchstabe, danach wird alles zum Funktionsnamen gezählt bis '(' auftaucht. Ist das korrekt oder kann es auch Funktionen geben die mit Großbuchstaben beginnen? (Oder gar Funktionsnamen die nicht von '(' gefolgt werden weil sie keine Parameter benötigen.)

2) Bei Aufgabe iii: Sehe ich das im Beispiel richtig, dass in der übergebenen Liste bereits die Funktionsnamen am Stück sind, die Parameter samt Klammern aber einzeln und der Ausdruck dann wieder am Stück ist??

VG
Jannik
Ich bin gerade an den Tests für Task 3. Es wird also folglich welche geben, alles andere wäre ja wohl auch dumm...
Die Bearbeitung wird ja sowieso erst in ein paar Wochen sein :)
Zu 1) und 2)
Ja, der Funktionsname, die Parameter und die eigentliche Formel sind am Stück. Das erleichtert vieles! (in iii))
Parameter werden später erstmal nur einzelne Buchstaben sein. Es wird aber auch einen Test geben der längere Funktionsparamter vorsieht. Man kann aber davon ausgehen, dass die verschiedenen Parameter präfixfrei sind! Funktionsnamen werden in den Tests nur aus Kleinbuchstaben bestehen. Das dürfte aber kein großes Problem sein so etwas zu erweitern. Ich hoffe nicht, dass du daran gedacht hast 26 mal auf korrekten Buchstaben zu überprüfen! :shock:
Es wird keine Funktionen ohne Parameter geben.

fabian.wagner
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 152
Registriert: 19. Okt 2010 12:51

Re: Fragen zum ersten Praktikum

Beitrag von fabian.wagner » 19. Apr 2012 11:31

Tai hat geschrieben:Hallo,

hab gesehen das hier ein aktiver Thread ist zum Thema Praktikum.

Könnte mir mal jemand evtl. die Frage beantworten :)
http://www.d120.de/forum/viewtopic.php?f=167&t=25241
danke :)
Habe das auch schon gesehen, aber noch keine Zeit gehabt mir das durchlesen. Ich bin schließlich auch nur Student und muss auch einige Vorlesungen besuchen...
Es kann dadurch auch mal vorkommen, dass ich nicht innerhalb von einer oder zwei Stunden antworten werde.

jokke
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 6. Sep 2010 12:18
Kontaktdaten:

Re: Fragen zum ersten Praktikum

Beitrag von jokke » 19. Apr 2012 12:30

Hallo,

ich werde aus dem Javadoc zu isAtom() nicht wirklich schlau...

Was ist gemeint mit "RegEx-string of Calculator"?? Ich habe keine Methode für einen RegEx gefunden.. Soll die iwie selbst für PointNumberCalculator und IntegerCalculator implementiert werden?

was ist mit Ausdrücken wie (128) oder -2?

fabian.wagner
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 152
Registriert: 19. Okt 2010 12:51

Re: Fragen zum ersten Praktikum

Beitrag von fabian.wagner » 19. Apr 2012 12:37

jokke hat geschrieben:Hallo,

ich werde aus dem Javadoc zu isAtom() nicht wirklich schlau...

Was ist gemeint mit "RegEx-string of Calculator"?? Ich habe keine Methode für einen RegEx gefunden.. Soll die iwie selbst für PointNumberCalculator und IntegerCalculator implementiert werden?

was ist mit Ausdrücken wie (128) oder -2?
Ich habe dazu ein RegEx-String in Calculator verwendet um zu überprüfen ob das einzige Element eine Zahl ist. Ausdrücke wie (128) sind nicht atom. -2 allerdings schon!
Wenn du auch eine RegEx verwenden willst, was übrigens auch in den Aufgaben davor sehr sinnvoll war, kannst du dich gerne einlesen unter: http://docs.oracle.com/javase/1.4.2/doc ... ttern.html oder einfach mal RegEx googlen 8)

Antworten

Zurück zu „Archiv“