Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace HA_III_Höchstzahlverfahren
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Darauf entfallen wieviele Stimmen auf Partei A");
- int stimmenA=Convert.ToInt32(Console.ReadLine());
- Console.WriteLine("Darauf entfallen wieviele Stimmen auf Partei B");
- int stimmenB = Convert.ToInt32(Console.ReadLine());
- Console.WriteLine("Darauf entfallen wieviele Stimmen auf Partei C");
- int stimmenC = Convert.ToInt32(Console.ReadLine());
- Console.WriteLine("Wieviele Sitze sind zu verteilen?");
- int sitzeGesamt = Convert.ToInt32(Console.ReadLine());
- List<int> zahlen=new List<int>();
- //geteilt durch 1 hinzufügen^^
- zahlen.Add(stimmenA);
- zahlen.Add(stimmenB);
- zahlen.Add(stimmenC);
- //hoechstzahlen berechnen. es müssen auf jeden fall mehr zahlen als sitze berechnet werden. anzahltesten berechnet dann genau wieoft geteilt werden muss
- int i=2;
- while(!anzahltesten(zahlen)){
- zahlen.Add(stimmenA/i);
- zahlen.Add(stimmenB/i);
- zahlen.Add(stimmenC/i);
- i++;
- }
- Console.WriteLine("i: "+i);
- listausgabe(zahlen);
- int stimmenanzahla=0;
- int stimmenanzahlb=0;
- int stimmenanzahlc=0;
- int groeste=0;
- //stimmanteile nun ausrechnen
- for(int z=0;z<sitzeGesamt;z++){ //soviele höchstzahlen werden gewertet, jedes mal die höchste suchen
- for(int u=0;u<zahlen.Count;u++){ //größte zahl in zahlen suchen
- if(zahlen[u]>zahlen[groeste]){
- groeste=u; //index der größten zahl spcihern;
- }
- }
- if(groeste%3==0){
- stimmenanzahla++;
- }else if((groeste-1)%3==0){
- stimmenanzahlb++;
- }else{
- stimmenanzahlc++;
- }
- zahlen[groeste]=0; //damit sie im nächsten durchgang nichtmehr als "große zahl erkannt wird
- }
- Console.WriteLine(stimmenanzahla+" "+stimmenanzahlb+" "+stimmenanzahlc);
- Console.ReadLine();
- }
- public static bool anzahltesten(List<int> hoechstzahlen){
- if(hoechstzahlen.Count<=3){
- return false;
- }
- List<int> zahlen2=new List<int>();
- //alle bis auf die letzen 3 in die neue liste kopieren
- for(int i=0;i<(hoechstzahlen.Count-3);i++){
- zahlen2.Add(hoechstzahlen[i]);
- }
- zahlen2.Sort();
- Console.WriteLine("TESTAUSGABE...");
- Console.WriteLine("hoechstzahlen.Count: "+hoechstzahlen.Count);
- Console.WriteLine("zahlen2.Count: "+zahlen2.Count);
- Console.WriteLine("zahlen2:");
- for(int i=0;i<zahlen2.Count;i++){
- Console.Write(zahlen2[i]+" ");
- }
- Console.WriteLine();
- Console.WriteLine("hoechstzahlen:");
- for(int i=0;i<hoechstzahlen.Count;i++){
- Console.Write(hoechstzahlen[i]+" ");
- }
- Console.WriteLine();
- Console.WriteLine("TESTAUSGABE...ENDE");
- //die letzen 3 zahlen aus hoechstzahlen müssen nun alle kleiner als die ersten 3 aus zahlen2 sein
- if(zahlen2[0]>hoechstzahlen[hoechstzahlen.Count-1] && zahlen2[0]>hoechstzahlen[hoechstzahlen.Count-2] && zahlen2[0]>hoechstzahlen[hoechstzahlen.Count-3] &&
- zahlen2[1]>hoechstzahlen[hoechstzahlen.Count-1] && zahlen2[1]>hoechstzahlen[hoechstzahlen.Count-2] && zahlen2[1]>hoechstzahlen[hoechstzahlen.Count-3] &&
- zahlen2[2]>hoechstzahlen[hoechstzahlen.Count-1] && zahlen2[2]>hoechstzahlen[hoechstzahlen.Count-2] && zahlen2[2]>hoechstzahlen[hoechstzahlen.Count-3]){
- return true;
- }
- return false;
- }
- public static void listausgabe(List<int> hoechstzahlen){
- Console.WriteLine("hoechstzahlen.Count: "+hoechstzahlen.Count);
- Console.WriteLine("A B C");
- for(int i=0;i<hoechstzahlen.Count;i++){
- Console.Write(hoechstzahlen[i]+" ");
- if((i!=0)&&(i%3==0)){
- Console.WriteLine("");
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment