libdo

Untitled

Sep 19th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
Add Comment
Please, Sign In to add comment