Codemonkey Übungen Lösungen

Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!

Moderator: Algorithmen und Datenstrukturen

Forumsregeln
Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!
Dome2403
Nichts ist wie es scheint
Beiträge: 23
Registriert: 6. Mai 2017 13:24

Codemonkey Übungen Lösungen

Beitrag von Dome2403 »

Hallo

gibt es irgendwo Lösungsvorschläge für die Codemonkey Übungen? Sitze bereits seit 2h an einer Aufgabe und komme einfach nicht weiter... so kann ich mich leider nicht wirklich auf das Testat vorbereiten. Wenn ich anhand der Lösung nachvollziehen könnte was ich falsch mache wäre mir damit mehr geholfen als dass ich jetzt verzweifelt die Aufgabe abbreche, weil ich einfach schon zu viel Zeit in diese investiert habe.

Liebe Grüße
Dominic

Prof. Karsten Weihe
Moderator
Moderator
Beiträge: 1824
Registriert: 21. Feb 2005 16:33

Re: Codemonkey Übungen Lösungen

Beitrag von Prof. Karsten Weihe »

Posten Sie doch Ihre bisherige Lösung hier!

KW

Dome2403
Nichts ist wie es scheint
Beiträge: 23
Registriert: 6. Mai 2017 13:24

Re: Codemonkey Übungen Lösungen

Beitrag von Dome2403 »

hab versucht es so in etwa zu lösen was meiner Logik nach funktionieren sollte. JUnit läuft auch durch, nur bestehe ich die Tests nicht.



public Listobject<T>[] executeInsertElementInArray(Listobject<T> element, int pos)
{
Listobject<T>[] newArray = new Listobject[getArray().length + 1];
newArray[pos] = element;
int indexCount = 0;

for(int i=0;i<getArray().length;i++){
if(newArray[indexCount] == null){
newArray[indexCount]=getArray();
indexCount++;
}else{
newArray[indexCount+1]=getArray();
indexCount = indexCount+2;
}

}

return newArray;
}

Julian Prommer
Moderator
Moderator
Beiträge: 167
Registriert: 17. Apr 2013 15:48

Re: Codemonkey Übungen Lösungen

Beitrag von Julian Prommer »

Welche Tests?

Alle?
AuD Orga

Julian Prommer
Moderator
Moderator
Beiträge: 167
Registriert: 17. Apr 2013 15:48

Re: Codemonkey Übungen Lösungen

Beitrag von Julian Prommer »

Genau eine Zeile mag der Parser nicht.
Was nicht einmal zum Compiler kommt wird schon mal gar nicht getestet!

Studieren Sie die Ausgabe des Parser!

Korrigieren Sie den Fehler!
Dann wird es wenigstens Compilieren, aber viele Tests werden Sie bestehen damit.
AuD Orga

Dome2403
Nichts ist wie es scheint
Beiträge: 23
Registriert: 6. Mai 2017 13:24

Re: Codemonkey Übungen Lösungen

Beitrag von Dome2403 »

habe es etwas verändert jetzt bestehe ich immerhin 1 von 11 Tests, weiter komme ich aber dennoch nicht.


public Listobject<T>[] executeInsertElementInArray(Listobject<T> element, int pos)
{
Listobject<T>[] newArray = new Listobject[getArray().length + 1];
int indexCount = 0;

for(int i=0;i<getArray().length;i++){
if(i==pos){
newArray=element;
newArray[i+1]=getArray();
indexCount=indexCount+2;
}
else{
newArray[indexCount]=getArray();
indexCount++;
}

}

return newArray;
}

Dome2403
Nichts ist wie es scheint
Beiträge: 23
Registriert: 6. Mai 2017 13:24

Re: Codemonkey Übungen Lösungen

Beitrag von Dome2403 »

Meine eigentliche Frage wurde auch nicht beantwortet, nämlich ob es Lösungen zu den Aufgaben gibt? Weil für jemanden wie mich(kenne erst seit 6 Monaten Java und da auch nur die Basics aus Fop) dauert es mindestens 1,5h ++ um selbst auf die richtigen Lösungen zu kommen, wenn ich es überhaupt schaffe. Da im Testat 1 Aufgaben aus bis zu 41 (wenn ich richtig gezählt habe) verschiedenen Implementierungen dran kommen können und ich gerne wenigstens 1x alle verstehen möchte um sie dann selbst zu implementieren, ist es mir ohne Lösungsvorschläge, alleine vom Zeitaufwand, nicht möglich mich entsprechend auf das Testat vorzubereiten.

Grüße
Dominic

Dome2403
Nichts ist wie es scheint
Beiträge: 23
Registriert: 6. Mai 2017 13:24

Re: Codemonkey Übungen Lösungen

Beitrag von Dome2403 »

und hier meine finale Lösung nach sage und schreibe 1:45h rumbasteln und rumprobieren.. mit dieser Lösung schaffe ich immerhin 2 der 11 Junit Tests
an dieser Stelle beende ich nun frustriert diese Aufgabe und versuche mich an der nächsten.
{
Listobject<T>[] newArray = new Listobject[getArray().length + 1];
newArray=getArray();

if(pos == newArray.length-1){
newArray[pos]=element;
setArray(newArray);
return getArray();
}
if(newArray[pos] == null){
newArray[pos] = element;
setArray(newArray);
return getArray();
}else{

for(int i=newArray.length-1;i>=pos;i--){
newArray = newArray[i-1];
}

newArray[pos] = element;

setArray(newArray);

return getArray();}
}

hallo6
Erstie
Erstie
Beiträge: 14
Registriert: 4. Mai 2017 10:36

Re: Codemonkey Übungen Lösungen

Beitrag von hallo6 »

Hallo Dome2403,

du erstellst in der ersten Zeile ein neues Array, welches ein Element größer ist, als das existierende. Das brauchst du ja auch, um ein Element einzufügen. In der nächsten Zeile überschreibst du dies jedoch mit dem bisherigen Array. An sich eine nette Idee, die aber leider nicht so funktioniert! Die erste Zeile erstellt ein neues Objekt im Speicher (Arrays sind Objekte -> Referenzadresse in Variable gespeichert), sodass "newArray" auf diese Speicherstelle zeigt. Der Aufruf in der zweiten Zeile jedoch setzt die Adresse auf die des bisherigen Arrays und dein erstelltes Array geht verloren. Folglich liegt in "newArray" nur eine Referenz auf "getArray()".
Du musst die einzelnen Arrayelemente kopieren um den gewünschten Effekt zu erzielen.

Hier ein Programm in Pseudo-Code, das dir vielleicht hilft:
Erstelle neues Array mit Länge +1;
Solange getArray() Elemente hat mache:
Teste, ob position die ist, an der das Element eingefügt werden soll
ja:
füge neues element in neues array ein;
füge dahinter noch das eigentliche Element aus getArray() ein;
nein:
kopiere das eigentliche element ins neue Array;
Hier noch testen, ob Element nach ganz hinten soll (die Schleife hätte es nicht eingefügt) und eventuell einfügen;
neues Array speichern (setArray());
neues Array zurückgeben;
Für die Realisierung benötigst du eine zusätzliche Zählvariable für das neue Array, da der Index darin nach Einfügen des neuen Elements stets Eins vor dem alten Array ist.

Villeicht konnte ich dir ja helfen...

Vykyfikation
Mausschubser
Mausschubser
Beiträge: 69
Registriert: 9. Mai 2017 12:44

Re: Codemonkey Übungen Lösungen

Beitrag von Vykyfikation »

Schau mal in dem Thread "Lösungen zu Array" rein, dort habe ich eine Lösung gepostet, die funktioniert :)

hallo6
Erstie
Erstie
Beiträge: 14
Registriert: 4. Mai 2017 10:36

Re: Codemonkey Übungen Lösungen

Beitrag von hallo6 »

Ich glaube er hat Probleme beim insert mit Position und nicht über den Comparator :wink:

Antworten

Zurück zu „AuD: Programmieraufgaben“