Kurzusok
/
C#
C#
/
Feladatok
/
A hiperinfláció eléri Hyperiát
A hiperinfláció eléri Hyperiát

A hiperinfláció eléri Hyperiát

Tanulófeladat

Bevezetés

Túlcsordulás

Aritmetikai túlcsordulás akkor következik be, amikor egy számítás, például egy aritmetikai művelet vagy típuskonverzió olyan értéket eredményez, amely nagyobb, mint a fogadó típus kapacitása.

Az int és long típusú kifejezések, valamint előjel nélküli megfelelőik ilyenkor csendben átfordulnak.

Az egészszám-műveletek viselkedése módosítható a checked kulcsszó használatával. Ha egy checked blokkon belül túlcsordulás történik, a rendszer egy OverflowException példányt dob.

int one = 1;
checked
{
    int expr = int.MaxValue + one;   // OverflowException is thrown
}

// or

int expr2 = checked(int.MaxValue + one);     // OverflowException is thrown

A float és double típusú kifejezések a végtelen egy speciális értékét veszik fel.

A decimal típusú kifejezések OverflowException példányt dobnak.

Utasítások

Hyperia országnak megvannak a maga problémái. Az infláció különösen elszabadult. Berepítettek, hogy leszerződj a központi bankhoz.

1. Bankjegycímletek kiírása

A belső adminisztráció egyszerűsítése érdekében a központi bank minden címletet részekre bontott: egy alapra, amely viszonylag változatlan marad, és egy szorzóra (amely minden címletnél ugyanaz), amely évente, hetente vagy akár naponta változhat.

Nyomtatáskor a bankjegyeken feltüntetett címletek az alap és a szorzó szorzataként jelennek meg.

Mire ezt a rendszert bevezették, a legkisebb bankjegy címlete már 10 000 000 volt. Az alábbi táblázat a rendszer bevezetésekor érvényes helyzetet mutatja (az első 3 címletre). Azóta a helyzet sokkal rosszabb lett, és nemcsak a szorzó változik, hanem az alap is.

Alap Szorzó Címlet
10 000 1 000 10 000 000
50 000 1 000 50 000 000
100 000 1 000 100 000 000
... 1 000 ...

Összefoglalva ez azt jelenti, hogy címlet = alap * szorzó.

Kérlek, implementáld a CentralBank.DisplayDenomination() metódust, amely megkapja az alapot és a szorzót, és visszaadja a szorzatukat stringként (alap * szorzó). A visszaadott numerikus stringet nem kell formázni.

Ha a szorzás túlcsordulást okoz, akkor a "*** Too Big ***" stringet kell visszaadni.

CentralBank.DisplayDenomination(10000L, 1000L);
// => "10000000"
CentralBank.DisplayDenomination(long.MaxValue / 2, 10000L);
// => "*** Too Big ***"

2. Hyperia GDP-jének megjelenítése

A központi bank ugyanezt a szorzóalapú megközelítést használja a GDP belső nyilvántartására. A statisztikákat egy alapcímletben rögzítik, majd a szorzóval felszorozzák.

Kérlek, implementáld a CentralBank.DisplayGDP() metódust, amely megkapja az alap GDP-t és az aktuális szorzót, majd a GDP-t stringként adja vissza.

Ha a GDP nem számítható ki, akkor a "*** Too Big ***" stringet adja vissza.

CentralBank.DisplayGDP(555f, 10000f);
// => "5550000"
CentralBank.DisplayGDP(float.MaxValue / 2, 10000f);
// => "*** Too Big ***"

3. A vezető közgazdász fizetésének megjelenítése

A banknál a főnököd biztosra akar menni, hogy a bérszámfejtéskor nem lesz gond.

Implementáld a CentralBank.DisplayChiefEconomistSalary() metódust, amely egy alapegységekben kifejezett fizetést (a fentiek szerint) és egy szorzót vesz át, és visszaadja a szorzatot tartalmazó stringet.

Ha a fizetés nem számítható ki, akkor a "*** Much Too Big ***" stringet adja vissza.

CentralBank.DisplayChiefEconomistSalary(555000m, 10000m);
// => "5550000000"
CentralBank.DisplayChiefEconomistSalary(555000m, decimal.MaxValue / 2L);
// => "*** Much Too Big ***"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C# Exercism

Készen állsz elkezdeni a(z) A hiperinfláció eléri Hyperiát 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.