Aufgabenblatt4



Typ / Zahl / Reihenfolge der Parameter stimmen

Rückgabewerte stimmen auch

Habe dir den Code mal hier hergestellt.

ftp://ftp.tkozone.de/Algo/Aufgabe4/meinString.java

Wenn du noch den fehler findest, währe ich dir sehr dankbar!

Gruß


Wat ich noch sagen wollte: ist es überhaupt laut Aufgabenstellung zulässing auf die Methode length() zurückzugreifen?! Diese ist doch immerhin eine Methode der Klasse String?! und daraus sollten/dürfen wir doch keine Methoden verwenden?! d.h. man müsste per Schleife o.ä. durchzählen, wie viele Elemente im Array sind?


Hmm ich verwende length bei char-arrays, also z.b.
char test = new char[3];
system.out.println(test.length)
Da es diese Methode bei jeder Art von Arrays gibt, geh ich nicht von aus, dass sie explizit zur klasse string gehört.


@TKONeo: Mach deine Konstruktoren noch public und hau’ sicherheitshalber das static aus den Funktionen raus Dann musst du aber noch überall statt

meinString.<Membervariable> = ...

schreiben

this.<Membervariable> = ...

sonst motzt der Compiler. Dass müsste dann eigentlich alles sein :finger: :wink: .

@simple: length() ist (hier) eine Methode von Array (es geht ja um den Typ char[]) und nicht von der Klasse String. Auch bei einem int-Array gibt es die Methode length().


Flow, hast du darüber mal nachgedacht?

War mir nicht sicher, ob ich die zuweisung this.zeichenkette = kopierString.zeichenkette einfach so machen darf.
Wenn ich sage this.zeichenkette = kopierString.zeichenkette, führt das doch dazu, dass der pointer von zeichenkette auf die selbe stelle wie kopierString.zeichenkette zeigt, oder?
Was passiert mit der zeichenkette von dem objekt in das ich kopiert hab, wenn ich irgendwann später die zeichenkette in dem objekt ändern, von dem aus ich kopiert hab.

hoff es ist ungefähr verständlich, was ich mein.

gruß

thomas


Habe ich alles gemacht, allerdings steht der Testcase jetzt bei 50%.

Hab den neuen Code wieder auf den FTP gelegt, fals noch jemand eine Idee dazu hat.

PS:
Thomas natürlich von mir auch alles gute zum Geburtstag, haben uns ja heute in FiMathe ja nicht gesehen.


Ja, verstehe was du meinst. Aber in dem Fall wird ja ein char[] einem char[] zugewiesen, also keine Referenz, sondern ein Wert. Diese Pointer-Geschichte gilt IMHO nur wenn du eine Objekt-Variable einer anderen zuweist.


Danke.
War mir nicht ganz sicher. Denk ich werd dementsprechend meinen code noch weng ändern sonst gibts mecker wegen viel zu umständlich :wink:


Du hast einen Schreibfehler in deiner setzeZeichenkette(…); heißt bei dir setzteZeichenkette(…).
Evtl. noch bei der konkateniere(…): Ich weiß nicht, ob man nur den zusammengestzten String zurückgeben muss oder auch in this.zeichenkette schreiben soll. Ich habe mal beides gemacht, aber schau erstmal ob’s vielleicht nur am Schreibfehler lag…

Und at muss man auf >= this.laenge prüfen, da die Länge des zwar Arrays x ist aber die Indizes gehen von 0 bis x-1.


Danke,

jetzt stehe ich bei 55% Prozent, ist doch toll, immer 5% Prozent mehr, noch ca. 10 Anläufe und wir sind vielleicht bei den 100% ( :#: :#: :#: )

Tolle Testcases!
Aber was will man machen.

Danke für die Hilfe!

Gruß


UPDATE:

So, jetzt habe auch ich es auf die 100% geschafft :smiley: :smiley: :smiley: :smiley:

Der letzte Fehler war, dass ich vergessen hatte bei

void print()
abzufragen wenn die länge = 0, dann gebe nichts aus!

Da muss man erstmal drauf kommen, dass das einen 45% kostet!

Soweit
Gruß´
Flo


Also meine print()-Fkt sieht auch nur so aus:

    public void print() {
        System.out.print(this.zeichenkette+"\n");
    }

und ich hab trotzdem 100% bekommen. Wenn zeichnekette leer ist wird halt nur ein line feed ausgegeben… Aber ist ja egal, wenn der Testcase jetzt zufrieden ist… :smiley:


Aufgabe 4.1 C)

warum funktioniert das denn nicht?
weils private ist und dadurch nicht darauf zugegriffen werden kann oder?


Bei der multroots Aufgabe hab ich auch 20%. Jetzt war meine Überlegung, vielleicht stimmt ja die Idee von TheFlow einfach nicht (auch wenn ichs auch so ‚interpretiert‘ hätte…).

Hat irgendjemand hier schon größere Erfolge einbringen können?

Hat z. B. die Fakultäten-Funktion weitergeholfen?


Ich hab die Reihe auch so gebildet
Und ich habe 100%.


Ich hab die Reihe auch so gebildet, aber nicht mit rekursiven aufruf, da die Parameter ja int sein sollen, und da geht ja dann alles verloren, wenn man die Fkt rekursiv aufruft.

Ich habe das ganze mit einer for Schleife gelöst.

100%

Gruß

jo
Rekursion scheidet aus, außer man programmiert sich eine andere private Methode.
Aber ich weiß nicht wie der Testcase darauf reagiert.


Ich schein mal wieder einen Knoten im Hirn zu haben. Ich hab für den a>b- und den a<b-Fall auch eine for-Schleife verwendet:

...
double ergebnis = Math.sqrt(b);
if (a < b) {
	for (; a < b; a++) {
		ergebnis = ergebnis * Math.sqrt(a);
	}
} else if
...

Ist das das, was ihr mit rekursiven Aufrufen gemeint habt?


wieso das? ich habs rekursiv gemacht und es geht astrein. bekomm leider trotzdem nur 20% im testcase :frowning:


ok. also es scheint so, als würde der testcase partout keine rekursion mögen. ich habe das ganze eben mal mit schleifen implementiert und bekomme sofort 100%.
schade eigentlich, weil meine rekusive lösung exakt genauso funktioniert :motz: