05. FELADAT · FORRÁSKÓD
Osztályképviselő-választás
Program.csAnimáció megnyitása →
namespace Feladat05_Valasztas
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("=== Osztályképviselő-választás – szavazatszámlálás ===");
Console.WriteLine($"1 - {JeloltNeve(1)}");
Console.WriteLine($"2 - {JeloltNeve(2)}");
Console.WriteLine($"3 - {JeloltNeve(3)}");
Console.WriteLine();
Console.Write("Hány szavazólapot adtak le? ");
int szavazolapok = int.Parse(Console.ReadLine());
int elsoJelolt = 0;
int masodikJelolt = 0;
int harmadikJelolt = 0;
int ervenytelen = 0;
for (int i = 1; i <= szavazolapok; i++)
{
Console.Write($"{i}. szavazólap: ");
int szavazat = int.Parse(Console.ReadLine());
switch (szavazat)
{
case 1: elsoJelolt++; break;
case 2: masodikJelolt++; break;
case 3: harmadikJelolt++; break;
default: ervenytelen++; break;
}
}
int ervenyes = elsoJelolt + masodikJelolt + harmadikJelolt;
Console.WriteLine();
Console.WriteLine("--- Eredmény ---");
if (ervenyes == 0)
{
// Arányt nem tudunk számolni, de a darabszámok ilyenkor is érdekesek.
Console.WriteLine($"Érvénytelen szavazatok: {ervenytelen} db");
Console.WriteLine($"Érvényes szavazatok száma: {ervenyes} db");
Console.WriteLine("Nem érkezett egyetlen érvényes szavazat sem, a választás eredménytelen.");
}
else
{
Kiiras(JeloltNeve(1), elsoJelolt, ervenyes);
Kiiras(JeloltNeve(2), masodikJelolt, ervenyes);
Kiiras(JeloltNeve(3), harmadikJelolt, ervenyes);
Console.WriteLine($"Érvénytelen szavazatok: {ervenytelen} db");
Console.WriteLine($"Érvényes szavazatok száma: {ervenyes} db");
int legtobb = elsoJelolt;
if (masodikJelolt > legtobb) legtobb = masodikJelolt;
if (harmadikJelolt > legtobb) legtobb = harmadikJelolt;
int nyertesekSzama = 0;
if (elsoJelolt == legtobb) nyertesekSzama++;
if (masodikJelolt == legtobb) nyertesekSzama++;
if (harmadikJelolt == legtobb) nyertesekSzama++;
Console.WriteLine();
if (nyertesekSzama > 1)
{
Console.WriteLine($"Holtverseny alakult ki {legtobb} szavazattal a következő jelöltek között:");
if (elsoJelolt == legtobb) Console.WriteLine($"- {JeloltNeve(1)}");
if (masodikJelolt == legtobb) Console.WriteLine($"- {JeloltNeve(2)}");
if (harmadikJelolt == legtobb) Console.WriteLine($"- {JeloltNeve(3)}");
Console.WriteLine("Második fordulóra van szükség.");
}
else
{
string gyoztes;
if (elsoJelolt == legtobb) gyoztes = JeloltNeve(1);
else if (masodikJelolt == legtobb) gyoztes = JeloltNeve(2);
else gyoztes = JeloltNeve(3);
Console.WriteLine($"A választás győztese: {gyoztes} ({legtobb} szavazat)");
// Abszolút többség: az érvényes szavazatok több mint a fele.
if (legtobb * 2 > ervenyes)
{
Console.WriteLine("A győztes abszolút többséget szerzett.");
}
else
{
Console.WriteLine("A győztes nem szerzett abszolút többséget.");
}
}
}
}
static string JeloltNeve(int kod)
{
string nev;
switch (kod)
{
case 1: nev = "Kovács Réka"; break;
case 2: nev = "Nagy Bence"; break;
case 3: nev = "Tóth Dániel"; break;
default: nev = "Ismeretlen jelölt"; break;
}
return nev;
}
static void Kiiras(string nev, int szavazat, int ervenyes)
{
double szazalek = szavazat * 100.0 / ervenyes;
Console.WriteLine($"{nev}: {szavazat} szavazat ({szazalek:F1}%)");
}
}
}