Kurzusok
/
C++
C++
/
Feladatok
/
A kamat érdekes
A kamat érdekes

A kamat érdekes

Tanulófeladat

Bevezetés

Ciklusok

A ciklusok segítségével valamilyen logikát ismételten végre tudsz hajtani. A két leggyakoribb típus a while loop (határozatlan ismétlés) és a for loop (határozott, azaz megszámlált ismétlés). Létezik még a for each ciklus is, amellyel egy későbbi fogalomnál találkozol majd.

Általános szintaxis

A for loop egy fejlécből és egy kódblokkból áll; utóbbi a ciklus törzsét tartalmazza, kapcsos zárójelek közé zárva. A fejléc három részből áll, amelyeket pontosvessző ; választ el: inicializáló utasítás, feltétel és egy további kifejezés. Ezek bármelyike lehet üres.

for (init_statement; condition; expression) {
  some_statement;
}
  • Az init_statement rész olyan kód, amely csak egyszer fut le, még a ciklus elindulása előtt.
  • A condition rész egy olyan kifejezés kell hogy legyen, amelynek az értéke boolean, és ez szabályozza, hogy mikor álljon le a ciklus. A cikluson belüli kód addig fut le, amíg ez a feltétel true értékű. Amint ez a kifejezés false értékű lesz, a ciklus további iterációi már nem futnak le.
  • Az expression rész olyan kód, amely minden iteráció végén lefut.

A while loop mindaddig végrehajtja a törzsét, amíg a condition ellenőrzése true. Az alábbi kódrészlet megmutatja, hogyan alakíthatsz át egy for ciklust egy while loop ciklussá.

init_statement;
while(condition) {
    some_statement;
    expression;
}

Kitérő: növelés és csökkentés

Amikor ciklusokkal dolgozol, gyakran szükség van arra, hogy egy számlálóváltozóhoz hozzáadj 1-et vagy kivonj belőle 1-et; ez a változó tartja nyilván az iterációkat. Ez annyira gyakori, hogy a növelésre és a csökkentésre külön operátorok vannak: ++ és --.

prefix és postfix formában léteznek. A prefix még az utasításban való felhasználás előtt módosítja a változót, a postfix pedig utána. A legtöbb esetben valószínűleg a prefix változatot szeretnéd használni.

int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3

A for ciklus - egy példa

Az init rész általában beállít egy számlálóváltozót, a condition ellenőrzi, hogy a ciklust folytatni kell-e vagy leállítani, a post rész pedig általában minden ismétlés végén növeli a számlálót.

int sum{0};
for (int i{1}; i < 10; ++i) {
  sum += i;
}

Ez a ciklus a 1-től 9-ig terjedő számokat adja össze (a 9-et is beleértve).

A break és a continue

Egy ciklus törzsén belül a break kulcsszóval teljesen leállíthatod a ciklus végrehajtását:

int sum{2};
while(true) {
    sum *= 2;
    if (sum > 1000)
        break;
}
// sum is now 1024

Ezzel szemben a continue kulcsszó csak az aktuális iteráció végrehajtását állítja le, és a következővel folytatja:

int equal_sum{0};
for (int i{1}; i < 7; ++i) {
  if  (i%2 == 1) {
    continue;
  }
  equal_sum += i;
}
// equal_sum is now 12
Note

A ciklus logikáját általában könnyebb megérteni, ha a break és a continue használatát minimalizálod vagy teljesen elkerülöd. Mindkét kulcsszó kihagyja a kód bizonyos részeit, és gyakran megnehezíti a nyomon követést.

Utasítások

Ebben a feladatban megtakarítási számlákkal fogsz dolgozni. A megtakarítási számlád egyenlege minden évben a kamatláb alapján frissül. A bank által adott kamatláb a számládon lévő pénz mennyiségétől (az egyenlegtől) függ:

  • 3,213% 0 dollárnál kisebb egyenleg esetén (az egyenleg még negatívabb lesz).
  • 0,5% 0 dollárnál nagyobb vagy azzal egyenlő, és 1000 dollárnál kisebb egyenleg esetén.
  • 1,621% 1000 dollárnál nagyobb vagy azzal egyenlő, és 5000 dollárnál kisebb egyenleg esetén.
  • 2,475% 5000 dollárnál nagyobb vagy azzal egyenlő egyenleg esetén.

Négy részfeladatod van, mindegyik az egyenleggel és annak kamatlábával foglalkozik.

1. Számítsd ki a kamatlábat

Valósítsd meg az interest_rate függvényt, amely a megadott egyenleg alapján kiszámítja a kamatlábat:

interest_rate(200.75);
// => 0.5

2. Számítsd ki a kamatot

Valósítsd meg a yearly_interest függvényt, amely a megadott egyenleg alapján kiszámítja a kamatot:

yearly_interest(200.75):
// => 1.003750

3. Számítsd ki az egyenleg éves frissítését

Valósítsd meg az annual_balance_update függvényt, amely kiszámítja az egyenleg éves frissítését, figyelembe véve a kamatlábat:

annual_balance_update(200.75);
// => 201.75375

4. Számítsd ki a kívánt egyenleg eléréséhez szükséges éveket

Valósítsd meg a years_until_desired_balance függvényt, amely kiszámítja a kívánt egyenleg eléréséhez szükséges minimális évek számát, figyelembe véve, hogy minden évben kamat adódik az egyenleghez. Ez azt jelenti, hogy az egyenleg egy év után: kezdő egyenleg + a kezdő egyenleg kamata. A második év utáni egyenleg az egy év utáni egyenleg + az egy év utáni egyenleg kamata. És így tovább, amíg az aktuális év egyenlege nem lesz nagyobb vagy egyenlő, mint a cél egyenleg.

double balance {200.75};
double targetBalance {214.88};
years_until_desired_balance(balance, targetBalance)
// => 14

Vedd figyelembe, hogy a visszaadott érték egy int.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C++ Exercism

Készen állsz elkezdeni a(z) A kamat érdekes feladatot?

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