SHOW:
|
|
- or go back to the newest paste.
1 | using System; | |
2 | using System.Collections.Generic; | |
3 | using System.Linq; | |
4 | using System.Text; | |
5 | ||
6 | namespace HA_III_Höchstzahlverfahren | |
7 | { | |
8 | ||
9 | class Program | |
10 | { | |
11 | static void Main(string[] args) | |
12 | { | |
13 | Console.WriteLine("Darauf entfallen wieviele Stimmen auf Partei A"); | |
14 | int stimmenA=Convert.ToInt32(Console.ReadLine()); | |
15 | ||
16 | Console.WriteLine("Darauf entfallen wieviele Stimmen auf Partei B"); | |
17 | int stimmenB = Convert.ToInt32(Console.ReadLine()); | |
18 | ||
19 | Console.WriteLine("Darauf entfallen wieviele Stimmen auf Partei C"); | |
20 | int stimmenC = Convert.ToInt32(Console.ReadLine()); | |
21 | ||
22 | Console.WriteLine("Wieviele Sitze sind zu verteilen?"); | |
23 | int sitzeGesamt = Convert.ToInt32(Console.ReadLine()); | |
24 | ||
25 | ||
26 | List<int> zahlen=new List<int>(); | |
27 | ||
28 | ||
29 | //geteilt durch 1 hinzufügen^^ | |
30 | zahlen.Add(stimmenA); | |
31 | zahlen.Add(stimmenB); | |
32 | zahlen.Add(stimmenC); | |
33 | //hoechstzahlen berechnen. es müssen auf jeden fall mehr zahlen als sitze berechnet werden. anzahltesten berechnet dann genau wieoft geteilt werden muss | |
34 | int i=2; | |
35 | while(!anzahltesten(zahlen,sitzeGesamt)){ | |
36 | zahlen.Add(stimmenA/i); | |
37 | zahlen.Add(stimmenB/i); | |
38 | zahlen.Add(stimmenC/i); | |
39 | i++; | |
40 | } | |
41 | Console.WriteLine("i: "+i); | |
42 | listausgabe(zahlen); | |
43 | int stimmenanzahla=0; | |
44 | int stimmenanzahlb=0; | |
45 | int stimmenanzahlc=0; | |
46 | int groeste=0; | |
47 | //stimmanteile nun ausrechnen | |
48 | for(int z=0;z<sitzeGesamt;z++){ //soviele höchstzahlen werden gewertet, jedes mal die höchste suchen | |
49 | for(int u=0;u<zahlen.Count;u++){ //größte zahl in zahlen suchen | |
50 | if(zahlen[u]>zahlen[groeste]){ | |
51 | groeste=u; //index der größten zahl spcihern; | |
52 | } | |
53 | } | |
54 | if(groeste%3==0){ | |
55 | stimmenanzahla++; | |
56 | }else if((groeste-1)%3==0){ | |
57 | stimmenanzahlb++; | |
58 | }else{ | |
59 | stimmenanzahlc++; | |
60 | } | |
61 | zahlen[groeste]=0; //damit sie im nächsten durchgang nichtmehr als "große zahl erkannt wird | |
62 | } | |
63 | Console.WriteLine(); | |
64 | Console.WriteLine("Ergebnis: "); | |
65 | Console.WriteLine(stimmenanzahla+" "+stimmenanzahlb+" "+stimmenanzahlc); | |
66 | Console.ReadLine(); | |
67 | ||
68 | } | |
69 | ||
70 | public static bool anzahltesten(List<int> hoechstzahlen,int gesamt){ | |
71 | if((hoechstzahlen.Count-3)<gesamt){ | |
72 | return false; | |
73 | } | |
74 | ||
75 | ||
76 | List<int> zahlen2=new List<int>(); | |
77 | //alle bis auf die letzen 3 in die neue liste kopieren | |
78 | for(int i=0;i<(hoechstzahlen.Count-3);i++){ | |
79 | zahlen2.Add(hoechstzahlen[i]); | |
80 | } | |
81 | zahlen2.Sort(); | |
82 | ||
83 | Console.WriteLine("TESTAUSGABE..."); | |
84 | Console.WriteLine("hoechstzahlen.Count: "+hoechstzahlen.Count); | |
85 | Console.WriteLine("zahlen2.Count: "+zahlen2.Count); | |
86 | Console.WriteLine("zahlen2:"); | |
87 | for(int i=0;i<zahlen2.Count;i++){ | |
88 | Console.Write(zahlen2[i]+" "); | |
89 | } | |
90 | Console.WriteLine(); | |
91 | Console.WriteLine("hoechstzahlen:"); | |
92 | for(int i=0;i<hoechstzahlen.Count;i++){ | |
93 | Console.Write(hoechstzahlen[i]+" "); | |
94 | } | |
95 | Console.WriteLine(); | |
96 | Console.WriteLine("TESTAUSGABE...ENDE"); | |
97 | //die letzen 3 zahlen aus hoechstzahlen müssen nun alle kleiner als die ersten 3 aus zahlen2 sein | |
98 | if(zahlen2[0]>=hoechstzahlen[hoechstzahlen.Count-1] && zahlen2[0]>=hoechstzahlen[hoechstzahlen.Count-2] && zahlen2[0]>=hoechstzahlen[hoechstzahlen.Count-3] && | |
99 | zahlen2[1]>=hoechstzahlen[hoechstzahlen.Count-1] && zahlen2[1]>=hoechstzahlen[hoechstzahlen.Count-2] && zahlen2[1]>=hoechstzahlen[hoechstzahlen.Count-3] && | |
100 | zahlen2[2]>=hoechstzahlen[hoechstzahlen.Count-1] && zahlen2[2]>=hoechstzahlen[hoechstzahlen.Count-2] && zahlen2[2]>=hoechstzahlen[hoechstzahlen.Count-3]){ | |
101 | ||
102 | return true; | |
103 | } | |
104 | return false; | |
105 | } | |
106 | ||
107 | public static void listausgabe(List<int> hoechstzahlen){ | |
108 | Console.WriteLine("hoechstzahlen.Count: "+hoechstzahlen.Count); | |
109 | Console.WriteLine("A B C"); | |
110 | for(int i=0;i<hoechstzahlen.Count;i++){ | |
111 | if((i!=0)&&(i%3==0)){ | |
112 | Console.WriteLine(""); | |
113 | } | |
114 | Console.Write(hoechstzahlen[i]+" "); | |
115 | } | |
116 | ||
117 | } | |
118 | ||
119 | } | |
120 | } |