/* 6 / 2 Mengenverwaltung.java */ import java.io.*; import java.util.StringTokenizer; class Menge { int [] Menge = new int [1000]; // speichert eine Menge // Konstruktor void Menge() { initialisiere(); } // Menge aus Datei einlesen void menge_einlesen(String Datei) { StringTokenizer st = null; FileReader fr = null; BufferedReader in = null; try { fr = new FileReader(Datei); in = new BufferedReader(fr); } catch(FileNotFoundException fnfe) { System.out.println("File not found!"); } try { st = new StringTokenizer(in.readLine()); } catch(IOException ioe) { System.out.println("IOException"); } int Element; while (st.hasMoreTokens()) { Menge[Integer.parseInt(st.nextToken())] = 1; } } // 1. Initialisieren einer Menge als leere Menge void initialisiere() { for (int t=0; t<1000; t++) { Menge[t] = 0; } } // 2. Pruefen, ob eine Menge leer ist boolean ist_leer() { if (anzahl_elemente() == 0) { return true; } else { return false; } } // 3. Feststellen, wieviele Elemente in einer Menge enthalten sind int anzahl_elemente() { int anzahl = 0; for (int t=0; t<1000; t++) { if (Menge[t]!=0) { anzahl++; } } return anzahl; } // 4. Feststellen, ob ein bestimmtes Element x in einer Menge enthalten ist boolean enthalten(int x) { if (Menge[x] != 0) { return true; } else { return false; } } // 5. Ein Element x in eine Menge einfuegen void einfuegen(int x) { Menge[x] = 1; } // 6. Die Schnittmenge zweier Mengen bilden Menge schnittmenge(Menge b) { Menge back = new Menge(); for (int t=0; t<1000; t++) { if (enthalten(t) && b.enthalten(t)) { back.einfuegen(t); } } return back; } // 7. Die Vereinigungsmenge zweier Mengen bilden Menge vereinigungsmenge(Menge b) { Menge back = new Menge(); for (int t=0; t<1000; t++) { if (enthalten(t) || b.enthalten(t)) { back.einfuegen(t); } } return back; } } class Mengenverwaltung { public static void main(String[] args) { Menge M1 = new Menge(); Menge M2 = new Menge(); Menge M3 = new Menge(); String menge1 = args[0]; String menge2 = args[1]; // Mengen einlesen M1.menge_einlesen(menge1); M2.menge_einlesen(menge2); // Ausgabe der Anzahl der Elemente von M1 System.out.println(M1.anzahl_elemente()); // Ausgabe der Anzahl der Elemente von M2 System.out.println(M2.anzahl_elemente()); // Berechnung der Schnittmenge M3 = M1.schnittmenge(M2); // Ausgabe, ob Schnittmenge leer (ja/nein) if (M3.ist_leer()) { System.out.println("ja"); } else { System.out.println("nein"); } // Berechnung der Vereinigungsmenge M3.initialisiere(); M3 = M1.vereinigungsmenge(M2); // Ausgabe der Anzahl der Elemente in der Vereinigungsmenge System.out.println(M3.anzahl_elemente()); // Ausgabe, ob der Wert 42 in Vereinigungsmenge enthalten ist (ja/nein) if (M3.enthalten(42)) { System.out.println("ja"); } else { System.out.println("nein"); } } }