Prof. Dr. Franz Schweiggert Institut für Angewandte Informationsverarbeitung 23. Juni 2008
Christoph Ott Blatt 8


Uni Logo



Einführung in die Programmierung
(SS 2008)



Abgabetermin: 26. Juni 2008

1 Wahlen

Manchmal gehen Wahlen ja nicht so aus wie sie ausgehen sollen. Während in Irland gerade der Jammer groß ist, dass die Mehrheit des Volks einfach den EU-Reformvertrag nicht unterstützen will, geht man da in anderen Ländern ''geschickter'' vor...

Stellt Euch also für dieses Blatt einfach vor, der russische Präsident hätte Euch um Mithilfe bei der ''Bearbeitung'' des Wahlergebnisses gebeten. Nehmt einfach mal an, Ihr hättet keine Skrupel diesem Wunsch zu folgen und schreibt ein kleines Programm, das über verschiedene Methoden das Wahlergebnis eines Wahlbezirks erfasst und entsprechend ''bearbeitet''.

Das Ergebnis ''Eures'' Wahlbezirks ist in einem Boolean-Array erfasst; true bedeutet hierbei der Wähler hat richtig gewählt, false bedeutet, der Wähler muss wohl unkonzentriert gewesen sein und sein Kreuz an der falschen Stelle gemacht haben. Das Programm WahlBsp.java wird in den Übungen entwickelt werden und kann als Grundlage für dieses Übungsblatt herangezogen werden.

1.1 Anzahl abgegebener Stimmen (2P)

Schreibt eine Methode, die den Array entgegennimmt und die Anzahl der abgegebenen Stimmen (also die Anzahl der Elemente des Arrays waehlerstimmen) bestimmt. Für den vorgegebenen Array sieht die Programmausgabe etwa folgendermaßen aus:
- Anzahl abgegebener (gueltiger) Stimmen: 130

1.2 Berechnung der Wahlergebnisses (2P)

Nun soll das Wahlergebnis bestimmt werden. Schreibt eine Methode, die den Array entgegennimmt, dessen Einträge durchläuft und den Anteil der Einträge mit dem Eintrag true zurückliefert. Gibt man dieses Ergebnis (in der main-Methode) am Bildschirm aus, so sieht die (formatierte) Ausgabe für den vorgegebenen Array etwa folgendermaßen aus:
- Anzahl abgegebener (gueltiger) Stimmen: 130
- Wahlergebnis: 63.8% 'richtige' Stimmen
Tipp: Denkt daran, dass bei der Division zweier Integer-Zahlen eine Integer-Division durchgeführt wird.

1.3 Ergebnis akzeptabel? (2P)

Schreibt eine Methode, der Ihr Euer Wahlergebnis der vorigen Teilaufgabe übergebt und die bestimmt, ob das Wahlergebnis akzeptabel ist. In unserem Fall sei ein Wahlergebnis dann akzeptabel, wenn mindestens 95% der Wähler für die richtige Partei gestimmt hat. Ein sinnvoller Rückgabewert dieser Methode wäre somit boolean. Wird auch dieses Ergebnis (in der main-Methode) auf dem Bildschirm ausgegeben, so sieht die Programmausgabe mittlerweile etwa folgendermaßen aus:
- Anzahl abgegebener (gueltiger) Stimmen: 130
- Wahlergebnis: 63.8% 'richtige' Stimmen
  >> Wahlergebnis ist noch nicht akzeptabel!

1.4 Einige Stimmen korrigieren (2P)

In dieser Teilaufgabe sollt Ihr eine Methode schreiben, die einige abgegebene Stimmen korrigiert (d.h. von false auf true setzt). Dazu soll sie den Array waehlerstimmen und zwei Integer-Werte entgegennehmen. Alle Array-Elemente zwischen diesem beiden Integer-Werten sollen nun auf true gesetzt werden. Da Arrays automatisch verändert werden, ist ein Rückgabewert somit nicht notwendig. Nachdem Ihr diese Methode (bspw. mit den Integer-Werten 20 und 120) aufgerufen habt, könnt Ihr auch wieder die Methoden aus den vorigen beiden Teilaufgaben aufrufen. Dann sollte die Programmausgabe etwa folgendermaßen aussehen:
- Anzahl abgegebener (gueltiger) Stimmen: 130
- Wahlergebnis: 63.8% 'richtige' Stimmen
  >> Wahlergebnis ist noch nicht akzeptabel!
- Wahlergebnis nach 1.Manipulation: 92.3% 'richtige' Stimmen
  >> Wahlergebnis ist immer noch nicht akzeptabel!

1.5 Nicht-abgegebene Stimmen verteilen (2P)

Schreibt abschließend eine Methode, die den Array waehlerstimmen und eine Integer-Variable laenge entgegennimmt. Diese Methode soll den bestehenden Array um genau so viele Elemente mit dem Wert true verlängern, dass der verlängerte Array genau laenge Elemente besitzt. Da Arrays nicht so einfach verlängert werden können, empfiehlt es sich einen zweiten Array der Größe laenge anzulegen, die Elemente von waehlerstimmen in diesen zu kopieren und den Rest des neuen Arrays mit true aufzufüllen. Anschließend kann man sich dann wieder das modifizierte Wahlergebnis ausgeben lassen. Ruft man die Methode beispielsweise mit dem vorgegebenen Array waehlerstimmen und dem ebenfalls vorgegebenen Integer-Wert moeglicheStimmen auf, so ergibt sich folgende Bildschrimausgabe:
- Anzahl abgegebener (gueltiger) Stimmen: 130
- Wahlergebnis: 63.8% 'richtige' Stimmen
  >> Wahlergebnis ist noch nicht akzeptabel!
- Wahlergebnis nach 1.Manipulation: 92.3% 'richtige' Stimmen
  >> Wahlergebnis ist immer noch nicht akzeptabel!
- Wahlergebnis nach 2.Manipulation: 95.0% richtige Stimmen
  >> Wahlergebnis ist jetzt okay!
  >> Neue Wahlbeteiligung: 100.0%

Viel Erfolg!



Christoph Ott 2008-06-23