using System;
using System.Collections.Generic;
class Klasemen
{
private readonly List<string> DaftarKlub;
private readonly Dictionary<string, int> DaftarKlasemen;
public Klasemen(List<string> klub)
{
DaftarKlub = klub;
DaftarKlasemen = new Dictionary<string, int>();
}
// memperbarui poin klub
private void updatePoin(string klub, int poin)
{
// Jika klub sudah ada
if (DaftarKlasemen.ContainsKey(klub))
{
DaftarKlasemen[klub] += poin;
}
else
{
// Jika klub belum ada
DaftarKlasemen[klub] = poin;
}
}
// mencatat permainan dan memperbarui klasemen
public void catatPermainan(string klubKandang, string klubTandang, string skor)
{
try
{
// Cek Ketersediaan Klub
if (!DaftarKlub.Contains(klubKandang) || !DaftarKlub.Contains(klubTandang))
throw new Exception("Klub yang anda masukkan tidak tersedia");
// Cek Format Skor
string[] hasilPertandingan = skor.Split(":");
if (hasilPertandingan.Length != 2) throw new Exception("Format skor yang anda masukkan tidak sesuai!");
// Cek Hasil Pertandingan
int skorKandang = int.Parse(hasilPertandingan[0]);
int skorTandang = int.Parse(hasilPertandingan[1]);
// Jika Klub Kandang Menang
if (skorKandang > skorTandang)
{
updatePoin(klubKandang, 3);
updatePoin(klubTandang, 0);
}
else if (skorKandang < skorTandang)
{
// Jika Klub Tandang Menang
updatePoin(klubKandang, 0);
updatePoin(klubTandang, 3);
}
else
{
// Jika Seri
updatePoin(klubKandang, 1);
updatePoin(klubTandang, 1);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
// mencetak klasemen
public void cetakKlasemen()
{
foreach (var entry in DaftarKlasemen)
{
Console.WriteLine($"{entry.Key} => {entry.Value} poin");
}
}
// mengambil peringkat berdasarkan nomor peringkat
public void ambilPeringkat(int nomorPeringkat)
{
try
{
// Cek ketersediaan klasemen
List<KeyValuePair<string, int>> daftarKlasemen = new List<KeyValuePair<string, int>>(DaftarKlasemen);
if (nomorPeringkat >= 0 && nomorPeringkat < daftarKlasemen.Count)
{
var klub = daftarKlasemen[nomorPeringkat];
Console.WriteLine(klub.Key);
}
else
{
throw new Exception("Klasemen tidak tersedia.");
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
public static void Main()
{
Klasemen klasemen = new Klasemen(new List<string> { "Liverpool", "Chelsea", "Arsenal" });
klasemen.catatPermainan("Arsenal", "Liverpool", "2:1");
klasemen.catatPermainan("Arsenal", "Chelsea", "1:1");
klasemen.catatPermainan("Chelsea", "Arsenal", "0:3");
klasemen.catatPermainan("Chelsea", "Liverpool", "3:2");
klasemen.catatPermainan("Liverpool", "Arsenal", "2:2");
klasemen.catatPermainan("Liverpool", "Chelsea", "0:0");
klasemen.cetakKlasemen();
klasemen.ambilPeringkat(2);
}
}