Seite 2 von 3

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 22. Apr 2012 12:29
von christophbued
mein du if (p == null )

(isInteger(p.data()) && s == null)


haben eben mal den debugger angeworfen und der sagt mit das in der zeile

// nächstes zeichen operator
if (!isOperator(p.data()) && s != null) {

p == null ist...

dann hab ich mir eine methode geschrieben die alles schritt für schritt macht da ist p aber nicht == null...

könnt ihr mir einfach schnell die Zeile berichtigen ...häng jetzt schon zwei tage an der Aufgabe...muss mal weiter kommen...:-(

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 22. Apr 2012 12:31
von genix
Hi,

änder mal alle außer das erste if zu "else if".

Oder füg zu den Bedingungen "p != null && " hinzu.

Und zum 1. Punkt:

Code: Alles auswählen

if (p == null) {
     if(s != null) s.setNext(null); // hier fehlte der check auf s != null
     return ;
}
Also: immer schön prüfen, wenn es nicht eindeutig ist, ob eine Variable einen 'null' Wert hat.

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 22. Apr 2012 15:45
von Julian1
Ich habe mittlerweile meinen Fehler gefunden, es war unter anderem ein Fehler in der Hilfsmethode.
Das mit dem Debugger müsste ich mir eigentlich mal merken für die nächsten Praktika, auch in Aufgabe 2 habe ich sehr viel damit arbeiten müssen^^

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 23. Apr 2012 14:28
von christophbued
Soll AssembleNumbers() bzw AssemblePointNumbers() eigentlich auch Klammer finden und sie wie folgt einfügen????
das brauch man ja nachher aber in der aufgabestellung ist es nicht verlangt

"(12 + 12) +(34-3)"
(->12->+->12->) usw.

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 23. Apr 2012 14:32
von JannikV
Mit den Klammern soll assembleXXX gar nichts machen. Also weder in ein anderes Element stecken, noch diese löschen.

VG

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 23. Apr 2012 14:38
von fabian.wagner
Mit den Klammern soll assembleXXX gar nichts machen. Also weder in ein anderes Element stecken, noch diese löschen.
Was genau hättest du denn gemacht?

hier assemble = zusammenbauen, zusammenstellen etc.
Das heißt implizit auch, dass man keine neuen MathElements erzeugen soll! Sondern die alten bearbeiten muss... 8) Wenn man das macht, schlägt später ein Test fehl.

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 23. Apr 2012 14:44
von christophbued
Und was ist jetzt wenn ich eine Liste habe wo auch klammer enthalten sind....
gibt ja im test wie berück sichtige ich die dann???

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 23. Apr 2012 14:46
von bagwell
christophbued hat geschrieben:Und was ist jetzt wenn ich eine Liste habe wo auch klammer enthalten sind....
gibt ja im test wie berück sichtige ich die dann???
Iterier doch einfach durch die ganze Liste und füg nur die Elemente zu einem zusammen, die eine Zahl darstellen.
Wenn in deine Liste eine Klammer oder ein Operator auftaucht, gehst du in deiner Schleife einfach eine Position weiter.

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 23. Apr 2012 15:03
von fabian.wagner
bagwell hat geschrieben:
christophbued hat geschrieben:Und was ist jetzt wenn ich eine Liste habe wo auch klammer enthalten sind....
gibt ja im test wie berück sichtige ich die dann???
Iterier doch einfach durch die ganze Liste und füg nur die Elemente zu einem zusammen, die eine Zahl darstellen.
Wenn in deine Liste eine Klammer oder ein Operator auftaucht, gehst du in deiner Schleife einfach eine Position weiter.
Genau... und erzeuge bitte keine neuen MathElements :)

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 23. Apr 2012 15:05
von christophbued
jetzt bin ich total verwirrt AssembleNumbers() bzw. AssemblPointNumber() sollen doch solch eine liste

1 -> 2 -> 3 -> + -> 2-> 3->

zusammen zu solch einer liste
123-> + -> 23

also muss ich auch operatore beachten

aber klammer soll ich jetzt hier nicht beachten??

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 23. Apr 2012 15:08
von fabian.wagner
christophbued hat geschrieben:jetzt bin ich total verwirrt AssembleNumbers() bzw. AssemblPointNumber() sollen doch solch eine liste

1 -> 2 -> 3 -> + -> 2-> 3->

zusammen zu solch einer liste
123-> + -> 23

also muss ich auch operatore beachten

aber klammer soll ich jetzt hier nicht beachten??
Hier gibt es ja keine Klammern. Ja, ein Anwendungsfall oben stimmt.

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 23. Apr 2012 15:14
von bagwell
christophbued hat geschrieben:jetzt bin ich total verwirrt AssembleNumbers() bzw. AssemblPointNumber() sollen doch solch eine liste

1 -> 2 -> 3 -> + -> 2-> 3->

zusammen zu solch einer liste
123-> + -> 23

also muss ich auch operatore beachten

aber klammer soll ich jetzt hier nicht beachten??
Nochmal:
Ob du operatoren oder Klammern oder sonstwas in der Liste noch stehen hast, kann bei assembleNumbers() egal sein. Füge nur die Elemente zu einem Element zusammen die eine Zahl sind,
grobe Vorgehensweise:
IF element.bistDuEineZahl()==true
THEN füge die nächsten Elemente solange zusammen bis Element.bistDuEineZahl()==false;
ELSE Element weiterschalten

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 26. Apr 2012 23:42
von kain
Hallo, ich habe einen seltsamen Fall:

Fehlermeldung:

Expression 6 does not maintain the correct elements after calling assembleNumbers().
Expression 5 does not maintain the correct elements after calling assembleNumbers().
Expression 6 does not have the correct length after calling assembleNumbers().
Expression 5 does not have the correct length after calling assembleNumbers().

Liegt daran, da beim Parsen folgendes geschieht: 8923747823|4788923408|92304| statt 8923747823478892340892304. Passiert bei allen Zahlen in exp5 und exp6, die länger als 10 Stellen sind.

Hat einer eine Idee? Ich kann mir das nicht erklären. Benutze concat.

Danke.

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 26. Apr 2012 23:50
von Eric_B
du prüfst ob es ein Integer ist ein Integer kann aber max 2147483647 seien von daher ist dann eben bei Großen Zahlen irgendwann Schluss also musst dir was anderes überlegen als Kriterium. (Reguläre Ausdrücke können helfen ;-))

Re: Frage zu Praktikum 1, Aufgabe 1 ii) AssembleNumbers()

Verfasst: 26. Apr 2012 23:53
von kain
Danke, hast recht... :oops: