Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » OO Programmierung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen OO Programmierung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
neuling96
unregistriert
OO Programmierung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

3 codes vorgegeben :


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
public class Grinch {
	
	public static Haus[] stadt;
	
	private Geschenk[] geklauteGeschenke = new Geschenk[0];
	
	private int restzeit;

public Grinch
public void aufTourGehen() {
		// hier anfangen, die Häuser auszuräumen 
		
	}

	public static void main(String[] args) {
		// mit dieser Methode können Sie nachher Ihre Implementierung testen:
		test();
	}
	
	public static void test() {
		stadt = new Haus[12];
		for(int i=0;i<stadt.length;i++) {
			stadt[i] = new Haus();
		}
		
		Grinch grinch = new Grinch();
		
		grinch.aufTourGehen();
		grinch.inventur();
	}

}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
import java.util.Random;


public class Haus {
	
	public Geschenk[] baum; // Geschenke unter dem Baum
	public Geschenk[] schrank; // Geschenke im Schrank
	public Geschenk[] tisch; // Geschenke auf dem Tisch
	
	/**
	 * Konstruktor für Haus:
	 * Erzeugt ein neues Haus mit zufällig verteilten Geschenken.
	 */
	public Haus() {
		Random r = new Random();
		
		this.baum = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.baum.length;i++) {
			this.baum[i] = new Geschenk();
		}
		
		this.schrank = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.schrank.length;i++) {
			this.schrank[i] = new Geschenk();
		}

		this.tisch = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.tisch.length;i++) {
			this.tisch[i] = new Geschenk();
		}
	}

}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
import java.util.Random;


public class Geschenk {
	private int [] baum;
   private int []  baum
	/**
	 * Das Gewicht des Geschenks in Gramm
	 */
	public int gewicht;
	
	/**
	 * Konstruktor für Geschenk:
	 * Erzeugt ein neues Geschenk mit zufällig gewählter Größe
	 */
	public Geschenk() {
		Random r = new Random();
		this.gewicht = r.nextInt(901) + 100; // Zufallszahl zwischen 100 und 1000
	}

}

23.12.2014 21:39
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

upps im ersten code war die zeile
private int restzeit; nicht vorgegeben


a) Es ist der 23. Dezember und der Grinch m ochte loslegen. Er weiß, dass er nur bis zum 31. Dezember
Zeit hat, denn da ist er zu einer Neujahrsparty auf Gran Canaria eingeladen. Der Grinch arbeitet nur 10 Stunden jede Nacht.
Erweitern Sie die Klasse Grinch um eine Variable
restzeit
, die die verbleibenden Stunden als Ganzzahl halt. Fur jeden erzeugten Grinch soll die Restzeit mit 80 Stunden initialisiert werden. Es wird nicht zwischen einzelnen Nachten unterschieden
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public class Grinch {
	
	public static Haus[] stadt;
	
	private Geschenk[] geklauteGeschenke = new Geschenk[0];
	
	private int restzeit;
23.12.2014 21:43
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

public class Grinch {

public static Haus[] stadt;

private Geschenk[] geklauteGeschenke = new Geschenk[0];

private int restzeit=80;



oder

public class Grinch {

public static Haus[] stadt;

private Geschenk[] geklauteGeschenke = new Geschenk[0];

private int restzeit;

public Grinch(Haus[] stadt,Geschenk[] geklauteGeschenke, int restzeit){
this.restzeit=80;
23.12.2014 21:53
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Erweitern Sie die Klasse
Haus um eine Methode ausraeumen( , die alle Geschenke aus dem Hau entfernt (aus den Arraysbaum
,schrank und tisch ) und gesammelt in einem neuen Array zuruck gibt. Der Zugriff sollte auf folgende Weise moglich sein
Haus h = new Haus();
Geschenk[] geschenke = h.ausraeumen()

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

public static Geschenk []  ausraeumen(Geschenk[] baum,Geschenk[] schrank,Geschenk[] tisch){
 Geschenk [] löschen= {};
Geschenk[] baum=Geschenk [] löschen;
Geschenk[] schrank=Geschenk[] baum;
Geschenk[] tisch=Geschenk[] schrank;
Geschenk [] klau = new Geschenk[baum.length+schrank.length+ tisch.length]
for (int i=0; i<baum.length;i++){
Geschenk [i] klau=Geschenk[i] baum;
}
for (inty= 0; y<schrank.length;y++){
Geschenk [y+baum.length] klau=Geschenk[y] schrank
}
for (int z= 0; y<tisch.length;z++){
Geschenk [z+tisch.length] klau=Geschenk[z] schrank
}
return klau;
}
23.12.2014 22:33
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

oh man o man... ich hoffe das passt besser unglücklich

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

public static Geschenk []  ausraeumen(Geschenk[] baum,Geschenk[] schrank,Geschenk[] tisch){
 Geschenk [] löschen= new Geschenk  [0];
Geschenk [] löschen= {};
baum= löschen;
schrank=baum;
tisch=schrank;
Geschenk [] klau = new Geschenk[baum.length+schrank.length+ tisch.length]
for (int i=0; i<baum.length;i++){
 klau [i]= baum[i];
}
for (inty= 0; y<schrank.length;y++){
klau [y+baum.length] = schrank[y]
}
for (int z= 0; y<tisch.length;z++){
 klau [z+schrank.length+tisch.length]= schrank[z]
}
return klau;
}
24.12.2014 01:28
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

(c) Geschenke klauen kostet Zeit. Fur¨ alle angefangenen zehn Geschenke pro Haus veranschlagt der Grinch eine Stunde. Wenn also das ausraeumen() eines Hauses 54 Geschenke ergibt, hat der Grinch 6 Stunden in diesem Haus verbracht. Die Hauser¨ der Stadt hat sich der Grinch alle in seiner Klassenvariable stadt gemerkt.
Erweitern Sie die Methode aufTourGehen() in der Klasse Grinch so, dass der Grinch nach und nach die Hauser¨ der Stadt ablauft¨ und jedes Haus ausraumt.¨ Die erbeuteten Geschenke sichert sich der Grinch in seiner Variable geklauteGeschenke. Eine Methode, zwei Arrays zu kombinieren, haben Sie in der Vorlesung schon kennengelernt.
Achten Sie darauf, dass der Grinch sein Zeitkonto nicht uberschreitet.¨ Mit jedem besuchten Haus soll das Zeitkonto um die passende Anzahl Stunden schrumpfen. Ist die Zeit abgelaufen, bricht der Grinch seinen Diebeszug ab. Die Geschenke des zuletzt besuchten Hauses, wahrend¨ dem die Zeituberschreitung¨ passiert, sollen dabei verworfen werden.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
public void aufTourGehen() {
int sum=0;
for (int h=0; h< stadt.length; h++)	{
   Haus h = new Haus();
   y= h.ausraeumen();
   sum+=y.length;
}
Geschenk[]geklauteGeschenke= new Geschenk [sum];
int a=80;
sum=0;
for (int h=0; h< stadt.length; h++){
 Haus h = new Haus();
 y= h.ausraeumen();
 a-=y.length/10;

if(a>=0){
for int i=0; i<y.length ; i++){
Geschenk[i+sum] geschenke = y[i]
        sum+=y.length
  }
 }
}
24.12.2014 07:27
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich fang' mal von oben an.
Die Methode test hast du selbst geschrieben, oder? Es macht nämlich keinen Sinn, eine Stadt zu erzeugen, wenn der Grinch sie nicht kennt (sie muss ihm als Funktionsargument übergeben werden).

zu a)
die Initialisiertung der Restzeit ist auf beide Wege möglich. Warum du dem Konstruktor des Grinchs geklauteGeschenke übergibst, erschließt sich mir nicht (die will er ja erst noch klauen, hat sie nicht schon zu Beginn).
zu b)
Sieht dir nochmal den Beispielaufruf an. ausraeumen soll Geschenke liefern, keine entgegennehmen. Und wenn du die Geschenke aus dem Haus löschst, bevor du sie zu den geklauten kopierst, dann sind sie unwiederbringlich weg.
zu c)
wieso wird hir eine neue Stadt angelegt, der Grinch hat doch schon eine, oder nicht?
mit a=80 machst du die Variable restzeit überflüssig. Und was ist y für ein Datentyp? Ein Haus mit 9 Geschenken kann der Grinch ohne Zeitverlust leerräumen.

__________________
Syntax Highlighting fürs Board (Link)
24.12.2014 08:13 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

nein war so vorgegeben

wieso wird hir eine neue Stadt angelegt, der Grinch hat doch schon eine, oder nicht?
ja

ich habe verscuht deine Vorschläge umzusetzen
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
 public static Geschenk []  ausraeumen(){
Geschenk [] klau = new Geschenk[baum.length+schrank.length+ tisch.length];
for (int i=0; i<baum.length;i++){
 klau [i]= baum[i];
}
for (inty= 0; y<schrank.length;y++){
klau [y+baum.length] = schrank[y]
}
for (int z= 0; y<tisch.length;z++){
 klau [z+schrank.length+tisch.length]= schrank[z]
}
 Geschenk [] löschen= new Geschenk  [0];
Geschenk [] löschen= {};
baum= löschen;
schrank=baum;
tisch=schrank;
return klau;
}

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
public void aufTourGehen() {
int sum=0;
for (int h=0; h< stadt.length; h++)	{
   Haus h = new Haus();
   y= h.ausraeumen();
   sum+=y.length;
}
Geschenk[]geklauteGeschenke= new Geschenk [sum];
;
sum=0;
for (int h=0; h< stadt.length; h++){
 Haus h = new Haus();
 Geschenk [] y= new Geschenk [h.ausraeumen().length]
y= h.ausraeumen();
 restzeit-=y.length/10;

if(a>=0){
for int i=0; i<y.length ; i++){
Geschenk[i+sum] geschenke = y[i]
        sum+=y.length
  }
24.12.2014 08:39
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ich hab mir Gedanken gemacht, wie ich das stadt array benutzen kann und das problem mitin Haus mit 9 Geschenken kann der Grinch ohne Zeitverlust leerräumen.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
public void aufTourGehen() {
int sum=0;
for (int h=0; h< stadt.length; h++)	{
 sum+=stadt[h].length;
}
Geschenk[]geklauteGeschenke= new Geschenk [sum];

sum=0;
(double)restzeit;
for (int h=0; h< stadt.length; h++){
 (double)stadt[h].length;
restzeit-=stadt[h].length/10;
Geschenk [] y= new Geschenk [stadt[h].ausraeumen().length]
y= stadt[h].ausraeumen();
if(a>=0){
for int i=0; i<y.length ; i++){
 geschenke[i+sum] = y[i];
        sum+=y.length;
  }
24.12.2014 23:39
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nutze den Compiler!
(double)restzeit; kann so nicht allein stehen, was soll damit sein? Ebenso (double)stadt[h].length;
Am Ende ist restzeit immernoch ein int und stadt[h].length/10 ebenfalls eine Ganzzahl. Außerdem soll die Stunde schon bei der angefangenen 10er Gruppe verrechnet werden.
Das erreichst du am einfachsten mit restzeit-=(stadt[h].length+9)/10;

code:
1:
2:
Geschenk [] y= new Geschenk [stadt[h].ausraeumen().length]
y= stadt[h].ausraeumen();

beim ersten Aufruf von ausraeumen leerst du bereits das Haus und löschst die Geschenke. Folglicht wirst du beim zweiten Ausräumen nichts mehr finden können.
Geschenk [] y= stadt[h].ausraeumen(); ist die offensichtliche Lösung.
Und bei if(a>=0){ gibt es a nicht mehr.

__________________
Syntax Highlighting fürs Board (Link)
25.12.2014 07:21 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
public void aufTourGehen() {
int sum=0;
for (int h=0; h< stadt.length; h++)	{
 sum+=stadt[h].length;
}
Geschenk[]geklauteGeschenke= new Geschenk [sum];

sum=0;
(double)restzeit;
for (int h=0; h< stadt.length; h++){
 Geschenk [] y= stadt[h].ausraeumen();
restzeit-=(y.length+9)/10;

if(restzeit>=0){
for int i=0; i<y.length ; i++){
 geschenke[i+sum] = y[i];
        sum+=y.length;
  }


das müsste so hoffentlich passen
b) ist richtig?
25.12.2014 07:49
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

natürlich muss das double restzeit weg!
25.12.2014 07:56
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public class Main {
	public static void main(String[]args)
	{
		Haus[] stadt = new Haus[12];
		for(int i = 0; i < stadt.length; i++) {
			stadt[i] = new Haus();
		}
		
		Grinch grinch = new Grinch(stadt, 80);
		
		grinch.aufTourGehen();
	}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
import java.util.Random;

public class Geschenk {
	/**
	 * Das Gewicht des Geschenks in Gramm
	 */
	public int gewicht;
	
	/**
	 * Konstruktor für Geschenk:
	 * Erzeugt ein neues Geschenk mit zufällig gewählter Größe
	 */
	public Geschenk() {
		Random r = new Random();
		this.gewicht = r.nextInt(901) + 100; // Zufallszahl zwischen 100 und 1000
	}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
import java.util.Random;

public class Haus {
	
	private Geschenk[] baum; // Geschenke unter dem Baum
	private Geschenk[] schrank; // Geschenke im Schrank
	private Geschenk[] tisch; // Geschenke auf dem Tisch
	
	/**
	 * Konstruktor für Haus:
	 * Erzeugt ein neues Haus mit zufällig verteilten Geschenken.
	 */
	public Haus() {
		Random r = new Random();
		
		this.baum = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.baum.length;i++) {
			this.baum[i] = new Geschenk();
		}
		
		this.schrank = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.schrank.length;i++) {
			this.schrank[i] = new Geschenk();
		}

		this.tisch = new Geschenk[r.nextInt(31)];
		for(int i=0;i<this.tisch.length;i++) {
			this.tisch[i] = new Geschenk();
		}
	}
	
	public int anzahlGeschenke() {
		return baum.length + schrank.length + tisch.length;
	}

	public Geschenk[]  ausraeumen() { //nicht static!
		Geschenk[] klau = new Geschenk[baum.length + schrank.length + tisch.length];
		for (int i = 0; i < baum.length; i++) {
			klau[i] = baum[i];
		}
		for (int y = 0; y < schrank.length; y++){
			klau[y + baum.length] = schrank[y];
		}
		for (int z = 0; z < tisch.length; z++){
			klau[z + schrank.length + baum.length] = tisch[z];
		}
		baum = null;
		schrank = null;
		tisch = null;
		return klau;
	}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
public class Grinch {
	private Haus[] stadt;
	private Geschenk[] geklauteGeschenke = new Geschenk[0];
	private int restzeit;

	public Grinch(Haus[] stadt, int restzeit) {
		this.restzeit = restzeit; 
		this.stadt = stadt;
	}
	
	public void aufTourGehen() {
		int sum = 0;
		for (int h = 0; h < stadt.length; h++)	{
			sum += stadt[h].anzahlGeschenke();
		}
		Geschenk[] geklauteGeschenke = new Geschenk[sum];

		sum = 0;
		for (int h = 0; h < stadt.length; h++) {
			Geschenk [] y = stadt[h].ausraeumen();
			restzeit -= (y.length+9)/10;

			if(restzeit >= 0) {
				for (int i = 0; i < y.length; i++) {
					geklauteGeschenke[i+sum] = y[i];
				}
			sum += y.length;
			}
		}
	}
}


__________________
Syntax Highlighting fürs Board (Link)
25.12.2014 08:25 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

vielen dank

d.h

for (int h=0; h< stadt.length; h++) {
sum+=stadt[h].length;
ist falsch?


for (int h=0; h< stadt.length; h++){
Geschenk [] y= stadt[h].ausraeumen();

ist auch falsch?
26.12.2014 02:06
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

stadt[h].length existiert nicht, da du length nirgendwo definiert hast. Du musst dir selbst eine Methode schreiben, die die Länge liefert.

Geschenk [] y= stadt[h].ausraeumen(); ist nicht falsch (siehe meine Lösung, Zeile 20 beim Grinch). Du darfst es nur nicht doppelt aufrufen: Die Geschenke werden in y gespeichert und dann aus dem Haus gelöscht. Wenn das Haus keine Geschenke mehr hat und die erneut die Geschenke klauen willst, dann ist da nichts mehr zum Klauen übrig. Du überfällst doch auch nicht 2 mal in 10 Minuten die selbe Sparkassenfiliale.

__________________
Syntax Highlighting fürs Board (Link)
26.12.2014 08:17 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » OO Programmierung