static void Hetedik() { // Fájl írása Console.WriteLine("7. feladat"); try { using (FileStream fs = new FileStream("kepviselok.txt", FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)) using (StreamWriter sw = new StreamWriter(fs)) { // Összeszedjük a kerületek szerint a szavazatokat, majd rendezzük a gyűjteményt a kerület száma szerint IOrderedEnumerable <IGrouping <uint, Szavazat> > valasztokeruletek_szavazatai = Szavazatok.GroupBy <Szavazat, uint, Szavazat>( keySelector: csoport => csoport.Valasztokerulet, elementSelector: szav => szav). OrderBy(order => order.Key); foreach (IGrouping <uint, Szavazat> egy_valasztokerulet in valasztokeruletek_szavazatai) { // Meghatározzuk az adott kerületben (ahol a két érték egyezik) elért maximális szavazatot uint max_szavazat_a_keruletben = Szavazatok. Where(kerulet => kerulet.Valasztokerulet == egy_valasztokerulet.Key). Max(mi_a_max => mi_a_max.SzavazatSzam); // Megkeressük a nyertes jelöltet // (a .First() a végén visszaadja az első elemet az IEnumerable<>-ből.) // (Feltételezzük, hogy csak egy nyertes van.) Szavazat nyertes = Szavazatok. Where <Szavazat>(kerulet => kerulet.Valasztokerulet == egy_valasztokerulet.Key). Where <Szavazat>(szavazatszam => szavazatszam.SzavazatSzam == max_szavazat_a_keruletben).First(); // Kiírjuk az adatokat a fájlba sw.WriteLine(Convert.ToString(egy_valasztokerulet.Key) + ". " + nyertes.Vezeteknev + " " + nyertes.Utonev + " (" + (nyertes.Part == "-" ? "független" : nyertes.Part) + ")"); } } } catch (Exception e) { Console.WriteLine("Nem sikerült a 'kepviselok.txt' állomány írása."); Console.WriteLine(e.Message); Console.WriteLine("ENTER kilép."); Environment.Exit(0); } Console.WriteLine("Az állomány (kepviselok.txt) elkészült."); }
static void Elso() { // Fájl beolvasása try { using (FileStream szavazatokFajl = new FileStream("szavazatok.txt", FileMode.Open, FileAccess.Read)) using (StreamReader sr = new StreamReader(szavazatokFajl)) { while (!sr.EndOfStream) { // A bemeneti fájl szöveges sorokat tartalmaz. Ezt olvassuk, daraboljuk... string sor = sr.ReadLine(); string[] elemek = sor.Split(' '); try { // ...és tároljuk. Szavazat egy_szavazat = new Szavazat( Convert.ToUInt32(elemek[0]), Convert.ToUInt32(elemek[1]), elemek[2], elemek[3], elemek[4]); Szavazatok.Add(egy_szavazat); } catch (Exception e) { Console.WriteLine("Nem sikerült a fájl beolvasása: " + e.Message); continue; } } } } catch (Exception e) { Console.WriteLine("A fájl beolvasása során hiba történt."); Console.WriteLine(e.Message); Console.WriteLine("A program nem futhat tovább! ENTER kilép."); Console.ReadLine(); Environment.Exit(1); } }