Objektarray mit sich selbst rekombinieren

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,

ich habe ein Objektarray in folgender Form: (Artikel hat int, String, double für IDNR, Name, Preis)

Code:
  class Testartikel {
      static Artikel[] art136 = {
         new Artikel(1,"test1",1000),
         new Artikel(2,"",0),
         new Artikel(3,"test3",1000),
         new Artikel(4,"",0),
         new Artikel(5,"",0),
         new Artikel(6,"test6",1000)			 
         };
}

Dieses Array will ich nun nutzen um ein 2dimensionales Ergebnisarray zu erhalten. In diesem sollen alle möglichen Kombinationen abgespeichert sein, also etwa in der Form:

ergebnis[0] enthält das Array in dem nur der Artikel "test1" ist
ergebnis[1] enthält das Array in dem nur der Artikel "test3" ist
ergebnis[2] enthält das Array in dem nur der Artikel "test6" ist
ergebnis[3] enthält 1 und 3
ergebnis[4] enthält 1 und 6
ergebnis[5] enthält 3 und 6
ergebnis[6] enthält 1,3 und 6

dabei sollten die Positionen erhalten bleiben, also Artikel "test3" soll bswp auch in ergebnis[1][2] sein. nun fehlt mir der ansatz wie ich das in vernünftige schleifen oder ähnliches packen kann. im voraus schonmal danke

chris
 
Nur anhand der Nummer weiß man das test6 1,3 und 6 ist oder wie kommt man auf das?!?!?
 
thE_29 hat gesagt.:
Nur anhand der Nummer weiß man das test6 1,3 und 6 ist oder wie kommt man auf das?!?!?

Verstehe nicht wirklich was du meinst. test6 ist der name meines Objektes, dass an 6ter stelle im jeweiligen array steht... wie die ergebnissarrays sortiert sind ist mir egal. also kann auch ergebnis[0] test1, test3 und test6 enthalten
 
und ich verstehe noch nicht ganz wieso du dir erst ne neue Klasse schaffst in die du alles reinpackst dann aber doch wieder zurück zu array willst.

ansonsten bleibt dir wohl nichts anderes über als jedes element einzeln (for-schleife oder while-schleife) zu übertragen. du musst halt nur ne methode schreiben die überprüft welcher "zustand" gerade dran ist und dann auch noch weiß wohin das Object soll.
 
Also habe nun ein kleinen Schnipsel gemacht, der mir mein Array "staucht", also es in ein anderes Array kopiert und dabei die leeren Objekte (jene deren Pries==0 ist) rauslässt.

Code:
int j=0;
for (int i=0;i<temp1.length;i++)
{
 	if (temp1[i].preis!=0)
	{
		temp2[j]=temp1[i];
		j++;
	}
 }


Also erhalte ich ein Array, dass eine Länge von n hat. das ergebnisarray muss eine länge von (2^n-1) haben, damit alle zulässigen Kombinationen hineinpassen (korrigiert mich, wenn ich falsch liege).
EDIT: hmm ja ich liege falsch, 4 kombinieren sich zu 14, und 5 zu 29 statt, was nach 2^n-1 nicht passt... vlt fibonacci?

Nun fehlt mir also "nur" der Algorithmus der alle Kombinationen bastelt.
 
LeggY hat gesagt.:
und ich verstehe noch nicht ganz wieso du dir erst ne neue Klasse schaffst in die du alles reinpackst dann aber doch wieder zurück zu array willst.

Diese Klasse "Testartikel" stellt nur ein Beispielarray von Objekten dar.

LeggY hat gesagt.:
ansonsten bleibt dir wohl nichts anderes über als jedes element einzeln (for-schleife oder while-schleife) zu übertragen. du musst halt nur ne methode schreiben die überprüft welcher "zustand" gerade dran ist und dann auch noch weiß wohin das Object soll.

tjo und genau diese methode suche ich 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben