Parlamentberechner
-
Hi, ich hab ein kleines Programm berechnet mit dem man die Sitze einer Partei in einem Parlament berechnen kann, aber irgendwie will es nicht so ganz funktionieren. z.b. Ein Parlament hat 139 Sitze, eine Partei 30,4 % als Ergebnis bekomme ich dann aber die Partei bekäme 30,4 Sitze (nicht gerundet) und das kann nicht sein, ich hoffe ihr könnt mir helfen hier die CPP-Datei.
#include <stdio.h> #include <conio.h> #include <stdio.h> #include <conio.h> int geti(char* text) { printf(text); int i; scanf("%d",&i); return i; } double getd(char* text1) { printf(text1); double i; scanf("%lf",&i); return i; } int main (void) { int parlament=geti("\nGeben sie die maximale Anzahl Sitze im Parlament an > "); double anteil=getd("\nGeben sie den Anteil in Prozent an > "); while(anteil>0 && anteil<=100) { double prozent=parlament/100; if(prozent>0) { double sitze=anteil*prozent; printf("\nDie Partei erreicht %lf Sitze\n\n", sitze); } int control=geti("Wollen sie fortfahren 1=ja, 2=nein > "); if(control==2) { break; } parlament=geti("\nGeben sie die maximale Anzahl Sitze im Parlament an > "); anteil=getd("\nGeben sie den Anteil in Prozent an > "); } getch(); }
-
Du führst mit parlament/100 eine Ganzzahldivision durch => 139/100=1.
Wenn mindestens eine der beiden Zahlen eine Fließkommazahl ist, wird das richtige Ergebnis erreicht: parlament/100.0 => 139.0/100.0=1.39
-
Die Rechnung ist aber generell nicht korrekt, da die Sitzverteilung anhand der wirklich ins Parlament eingezogenen Parteien (d.h. unter Beachtung der 5%-Klausel) berechnet wird.
Du müßtest also die Prozentwerte aller Parteien einlesen lassen und dann nur die Parteien berücksichtigen, die mehr oder gleich 5% erreicht haben (d.h. die prozentuale Verteilung im Parlament ist daher größer oder gleich der Wahlprozente). Und zur exakten Berechnung kämen ja auch noch Überhangmandate hinzu -)
-
Und zur exakten Berechnung kämen ja auch noch Überhangmandate hinzu -)
Puh. Zu verstehen, wie man wirklich zu runden hat, geht nach mehrmaligem Lesen noch immer über meinen Horizont.