Kurzusok
/
C#
C#
/
Feladatok
/
Focimeccs-jelentések
Focimeccs-jelentések

Focimeccs-jelentések

Tanulófeladat

Bevezetés

Switch utasítások

A Wikipédia a switch utasítást így írja le: „egy szelekciós vezérlési mechanizmus, amely lehetővé teszi, hogy egy változó vagy kifejezés értéke megváltoztassa a program vezérlési folyamát”.

A mechanizmus a következő kulcsszavakat használja: switch, case, break és default.

A legegyszerűbb formájukban egy primitív vagy string kifejezést vizsgálnak meg, és annak értéke alapján döntenek. Például:

string direction = GetDirection();
switch (direction)
{
    case "left":
        GoLeft();
        break;
    case "right":
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

A legkifinomultabb formájukban megjelenik a lefelé kasztolás, case <Type> <variable>:, valamint az őrök (when).

Animal animal = GetAnimal();

switch (animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}

Utasítások

Egy olyan rendszert fejlesztesz, amely segít egy futballklub weboldala munkatársainak beszámolni a mérkőzésekről. Ez a rendszer képes elemezni a mérkőzés különböző aspektusait, mind a pályán, mind azon kívül, és események folyamává alakítja őket.

1. Add meg a játékosok leírását a mezszámuk alapján

A csapat kizárólag 4-3-3-as felállásban játszik, és sosem értett egyet az 1965-ös szabálymódosítással, amely engedélyezte a cseréket, a bővített keretekről nem is beszélve.

A játékosok leírásai a következők:

1 -> "goalie"
2 -> "left back"
3 & 4 -> "center back"
5 -> "right back"
6, 7 & 8 -> "midfielder"
9 -> "left wing"
10 -> "striker"
11 -> "right wing"

Valósítsd meg a statikus PlayAnalyzer.AnalyzeOnField() metódust, amely a mezszám alapján adja vissza a játékos leírását.

PlayAnalyzer.AnalyzeOnField(10);
// => "striker"

2. Kezeld az ismeretlen mezszámokat

Módosítsd a PlayAnalyzer.AnalyzeOnField() metódust úgy, hogy UNKNOWN-t adjon vissza, ha az 1-11 tartományon kívüli mezszámot dolgoz fel.

3. Terjeszd ki a lefedettséget a pályán kívüli tevékenységekre

Valósítsd meg a PlayAnalyzer.AnalyzeOffField() metódust, amely a játéktér körüli tevékenységek és szereplők leírásait adja vissza. Ez a metódus különböző típusú adatokat kap, amelyeket elemezni kell, és megfelelő szöveggé kell alakítani, hogy segítsék az újságírókat.

Kezdetnek a stadionnal kapcsolatos adatokkal foglalkozunk:

  • A stadionban jelenleg tartózkodó szurkolók száma (bármilyen int)
  • A stadion hangosbemondóján keresztül tett bejelentések (bármilyen string)

Az ismeretlen típusú adatokat nem szabad feldolgozni, ezért ha a metódus más típusú adatot kap, üres stringet kell visszaadnia.

PlayAnalyzer.AnalyzeOffField(5000);
// => "There are 5000 supporters at the match."

PlayAnalyzer.AnalyzeOffField("5 minutes to go!");
// => "5 minutes to go!"

PlayAnalyzer.AnalyzeOffField(0.5);
// => ""

4. Számolj be a mérkőzés közbeni eseményekről

Módosítsd a PlayAnalyzer.AnalyzeOffField() metódust úgy, hogy a mérkőzés közben történő események leírásait adja vissza.

Az események az Incident típus bármely leszármazott osztálya lehetnek, és tartalmazzák az esemény leírását. A sérülések az események egy különleges fajtáját jelentik, mert felfüggesztik a mérkőzést, ezért másképp kell kezelni őket.

PlayAnalyzer.AnalyzeOffField(new Foul());
// => "The referee deemed a foul."

PlayAnalyzer.AnalyzeOffField(new Injury(8));
// => "Oh no! Player 8 is injured. Medics are on the field."

5. Számolj be a klubmenedzserekről

Módosítsd a PlayAnalyzer.AnalyzeOffField() metódust úgy, hogy megemlítse a mérkőzésen jelen lévő klubmenedzsereket.

A menedzserek a Manager típus példányai, és rendelkeznek egy névvel, valamint annak a klubnak a nevével, amelyet irányítanak. A menedzser klubja ismeretlen lehet, ilyenkor null-ra lesz állítva. Ha egy menedzser klubja nem ismert, az nem képezheti a leírás részét.

PlayAnalyzer.AnalyzeOffField(new Manager("José Mário dos Santos Mourinho Félix", null));
// => "José Mário dos Santos Mourinho Félix"

PlayAnalyzer.AnalyzeOffField(new Manager("Jürgen Klopp", "Liverpool"));
// => "Jürgen Klopp (Liverpool)"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C# Exercism

Készen állsz elkezdeni a(z) Focimeccs-jelentések feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.