fork download
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. class Klasemen
  5. {
  6. private readonly List<string> DaftarKlub;
  7. private readonly Dictionary<string, int> DaftarKlasemen;
  8.  
  9. public Klasemen(List<string> klub)
  10. {
  11. DaftarKlub = klub;
  12. DaftarKlasemen = new Dictionary<string, int>();
  13. }
  14.  
  15. // memperbarui poin klub
  16. private void updatePoin(string klub, int poin)
  17. {
  18. // Jika klub sudah ada
  19. if (DaftarKlasemen.ContainsKey(klub))
  20. {
  21. DaftarKlasemen[klub] += poin;
  22. }
  23. else
  24. {
  25. // Jika klub belum ada
  26. DaftarKlasemen[klub] = poin;
  27. }
  28. }
  29.  
  30. // mencatat permainan dan memperbarui klasemen
  31. public void catatPermainan(string klubKandang, string klubTandang, string skor)
  32. {
  33. try
  34. {
  35. // Cek Ketersediaan Klub
  36. if (!DaftarKlub.Contains(klubKandang) || !DaftarKlub.Contains(klubTandang))
  37. throw new Exception("Klub yang anda masukkan tidak tersedia");
  38.  
  39. // Cek Format Skor
  40. string[] hasilPertandingan = skor.Split(":");
  41. if (hasilPertandingan.Length != 2) throw new Exception("Format skor yang anda masukkan tidak sesuai!");
  42.  
  43. // Cek Hasil Pertandingan
  44. int skorKandang = int.Parse(hasilPertandingan[0]);
  45. int skorTandang = int.Parse(hasilPertandingan[1]);
  46.  
  47. // Jika Klub Kandang Menang
  48. if (skorKandang > skorTandang)
  49. {
  50. updatePoin(klubKandang, 3);
  51. updatePoin(klubTandang, 0);
  52. }
  53. else if (skorKandang < skorTandang)
  54. {
  55. // Jika Klub Tandang Menang
  56. updatePoin(klubKandang, 0);
  57. updatePoin(klubTandang, 3);
  58. }
  59. else
  60. {
  61. // Jika Seri
  62. updatePoin(klubKandang, 1);
  63. updatePoin(klubTandang, 1);
  64. }
  65. }
  66. catch (Exception e)
  67. {
  68. Console.WriteLine(e.Message);
  69. }
  70. }
  71.  
  72. // mencetak klasemen
  73. public void cetakKlasemen()
  74. {
  75. foreach (var entry in DaftarKlasemen)
  76. {
  77. Console.WriteLine($"{entry.Key} => {entry.Value} poin");
  78. }
  79. }
  80.  
  81. // mengambil peringkat berdasarkan nomor peringkat
  82. public void ambilPeringkat(int nomorPeringkat)
  83. {
  84. try
  85. {
  86. // Cek ketersediaan klasemen
  87. List<KeyValuePair<string, int>> daftarKlasemen = new List<KeyValuePair<string, int>>(DaftarKlasemen);
  88. if (nomorPeringkat >= 0 && nomorPeringkat < daftarKlasemen.Count)
  89. {
  90. var klub = daftarKlasemen[nomorPeringkat];
  91. Console.WriteLine(klub.Key);
  92. }
  93. else
  94. {
  95. throw new Exception("Klasemen tidak tersedia.");
  96. }
  97. }
  98. catch (Exception e)
  99. {
  100. Console.WriteLine(e.Message);
  101. }
  102. }
  103.  
  104. public static void Main()
  105. {
  106. Klasemen klasemen = new Klasemen(new List<string> { "Liverpool", "Chelsea", "Arsenal" });
  107.  
  108. klasemen.catatPermainan("Arsenal", "Liverpool", "2:1");
  109. klasemen.catatPermainan("Arsenal", "Chelsea", "1:1");
  110. klasemen.catatPermainan("Chelsea", "Arsenal", "0:3");
  111. klasemen.catatPermainan("Chelsea", "Liverpool", "3:2");
  112. klasemen.catatPermainan("Liverpool", "Arsenal", "2:2");
  113. klasemen.catatPermainan("Liverpool", "Chelsea", "0:0");
  114.  
  115. klasemen.cetakKlasemen();
  116.  
  117. klasemen.ambilPeringkat(2);
  118. }
  119. }
Success #stdin #stdout 0.08s 31004KB
stdin
Standard input is empty
stdout
Arsenal => 8 poin
Liverpool => 2 poin
Chelsea => 5 poin
Chelsea