18. Mandatsverteilung nach D'Hondt
Bei der Mandatsverteilung nach D'Hondt erhält die Partei mit der höchsten Stimmenzahl das erste Mandat, deshalb der Name Höchstzahlverfahren. Danach wird ihre Stimmenzahl durch zwei dividiert und sie wird mit dieser Zahl bei der Bestimmung des nächsten Mandats mit den anderen Parteien verglichen. Nach dem zweiten Mandat einer Partei wird ihre Stimmenzahl durch drei, nach dem dritten durch vier usw. dividiert.
Unser Programm verwendet zwei Arrays Stimmen und Teiler und als Indextyp einen selbstdefinierten Typ TPartei.
type
TPartei = (CDU,SPD,GRN,FDP,LNK,REP,SON);
var
Stimmen : array[CDU..SON] of integer;
Teiler : array[CDU..SON] of integer;
|
|
|
Zu Beginn hat jede Partei den Stimmenteiler 1, der mit jedem Mandat um 1 erhöht wird. Zum Schluss ist daher der Stimmenteiler um 1 höher als die Zahl der Mandate einer Partei. |
|
type
TPartei = (CDU,SPD,GRN,FDP,LNK,REP,SON);
var
Form1: TForm1;
Stimmen : array[CDU..SON] of integer;
Summe : integer;
Teiler : array[CDU..SON] of integer;
implementation
{$R *.dfm}
function TForm1.MaxTeiler: TPartei;
var p,m:TPartei;
begin
m := CDU;
for p:= CDU to SON do
if Stimmen[p]/Teiler[p] > Stimmen[m]/Teiler[m] then m:=p;
result := m;
end;
procedure TForm1.Button1Click(Sender: TObject);
var p: TPartei;
m: Integer;
begin
{ Initialisieren}
Summe := 0;
for p := CDU to SON do begin
Summe := Summe + Stimmen[p];
Teiler[p] := 1;
end;
{ Verteilen }
for m := 1 to StrToInt(Edit1.Text) do
Inc(Teiler[MaxTeiler]);
{ Ausgeben }
with StringGrid1 do
for p := CDU to SON do begin
Cells[2,Ord(p)+1] := Format('%4.2f %',[100*Stimmen[p]/Summe]);
Cells[3,Ord(p)+1] := IntToStr(Teiler[p]-1);
end;
end;
|
Die Zahlen sind von der Landtagswahl Baden-Württemberg 2006. |
Aufgaben :
Schreibe eine Funktion ParteiToStr, mit der die Werte des Typs TPartei in einen entsprechenden String umgewandelt werden, z.B GRN in 'Grüne'.
Ändere das Programm so ab, dass Parteien, die die 5%-Hürde nicht schaffen, bei der Mandatsverteilung nicht berücksichtigt werden.
Einführung in das Programmieren mit DELPHI
