Komplement eines Arrays bilden

Kaschina

Mitglied
Hallo,

ich bin - relativ - unbewandert, was Programmieren angeht.
Nachdem ich den ganzen Tag versucht habe, auf eigene Faust weiterzukommen, jetzt dann doch meine Frage:

Ich soll Mengen bilden, die eine bestimmte Größe haben, denen man Werte hinzufügen kann, Werte löschen, Mengen vergleichen (Schnittmenge, Vereinigung, Vergleich, ...). Das alles soll in Form von Arrays umgesetzt werden und natürlich OHNE java.utils. Soweit, so gut.
Was mir jetzt Kopfzerbrechen bereitet, ist die Bildung des Komplements.
Wahrscheinlich stolpere ich über irgendwelche Steinchen oder übersehe etwas.

"In dieser Aufgabe sollen sie die Klasse BegrenzteMenge implementieren, die zur Darstellung von
Mengen im mathematischen Sinn verwendet werden kann, sofern die Menge entweder nur endlich
viele Elemente enthält, oder nur endlich viele Elemente nicht enthält. Insbesondere sollen also auch
Mengen der Form Alle Elemente des Universums bis auf die Zahlen 1 und 3 darstellbar sein. Ihre
Implementierung soll nur Elemente des Typs int aufnehmen können."

Würd mich über jeden Denkanstoß freuen!
 
Du hast deine Klasse
Code:
BegrenzteMenge
. Die enthält eine Menge an Zahlen, und einen indikator ob die Menge an Zahlen in der Menge ist oder nicht. (laut Aufgabenstellung)
Das Komplement davon bildest du dann einfach indem du den Indikator umkehrst.
 
Heißt, ich habe eine Methode, die prüft, ob ein Wert enthalten ist.
Wenn ich das Komplement bilden soll, dreh ich den Wert um? (war ursprünglich die Grundidee, wollte sich aber von mir zumindest nicht umsetzen lassen)..
Bei Licht an / aus noch verständlich, aber das Ganze in einem Array umsetzen?
 
Du musst mit dem Array nicht rumhantieren, du drehst einfach nur das flag um, dass dir anzeigt ob deine Element in deiner Menge sind oder nicht.

EDIT:
sowas in der Art
Java:
public class BegrenzteMenge {

	private boolean include;
	private int[] numbers;
	
	public BegrenzteMenge(int[] numbers, boolean include) {
		this.numbers = numbers;
		this.include = include;
	}
	
	/**
	 * Copy constructor
	 */
	public BegrenzteMenge(BegrenzteMenge menge) {
		int len = menge.getNumbers().length;
		this.numbers = new int[len];
		System.arraycopy(menge.getNumbers(), 0, this.numbers, 0, len);
		
		this.include = menge.isInclude();
	}
	
	public BegrenzteMenge complement() {
		BegrenzteMenge comp = new BegrenzteMenge(this);
		comp.include = !comp.include;
		
		return comp;
	}
	
	public boolean isInclude() {
		return include;
	}

	public int[] getNumbers() {
		return numbers;
	}
}
 
Zuletzt bearbeitet von einem Moderator:
Java:
public boolean indikator(int elem) {
	    indikator = !enthalten(elem);
	    return indikator;
Einfach nur so?!? (bzw das dann in der Komplement-Methode mit for-Schleife durchlaufen lassen?)
Ich muß mit der "neuen" Menge dann gar nicht rumhantieren?
DAS war mein größtes Problem, dass ich mit einem undendlich großen Array doch absolut nichts anstellen (geschweige denn ausgeben lassen kann)
 

Zurück
Oben