Tracks
/
C++
C++
/
Übungen
/
Zinsen sind interessant
Zinsen sind interessant

Zinsen sind interessant

Lernübung

Einführung

Schleifen

Mit Schleifen kannst du eine Logik wiederholt ausführen. Die beiden häufigsten Arten sind die while loop-Schleife (unbestimmtes Wiederholen) und die for-Schleife (bestimmtes oder gezähltes Wiederholen). Außerdem gibt es die for each-Schleife, die in einem späteren Konzept behandelt wird.

Allgemeine Syntax

Die for loop-Schleife besteht aus einem Kopf und einem Block, der den Schleifenblock in geschweifte Klammern eingeschlossen enthält. Der Kopf besteht aus 3 Komponenten, die durch Semikolons ; getrennt sind: init-statement, condition und ein weiterer Ausdruck. Jede davon kann leer sein.

for (init_statement; condition; expression) {
  some_statement;
}
  • Die Komponente init_statement ist Code, der nur einmal vor dem Start der Schleife ausgeführt wird.
  • Die Komponente condition muss ein Ausdruck sein, der zu einem boolean ausgewertet wird, und steuert, wann die Schleife beendet werden soll. Der Code innerhalb der Schleife läuft so lange, wie diese Bedingung zu true ausgewertet wird. Sobald dieser Ausdruck zu false ausgewertet wird, laufen keine weiteren Iterationen der Schleife mehr.
  • Die Komponente expression ist Code, der am Ende jeder Iteration ausgeführt wird.

Die for loop-Schleife führt ihren Block so lange aus, wie die Prüfung ihrer condition true ergibt. Das folgende Codebeispiel zeigt, wie du eine while loop-Schleife in eine while loop-Schleife umwandelst.

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

Zwischenspiel: Erhöhen und Verringern

Bei der Arbeit mit Schleifen musst du oft 1 zu einer Zählervariable addieren oder 1 davon subtrahieren, die die Iterationen mitzählt. Das ist so üblich, dass das Erhöhen und Verringern eigene Operatoren hat: ++ und --.

Sie treten in einer Präfix- und einer Postfix-Form auf. Die Präfix-Version ändert die Variable vor ihrer Verwendung in der Anweisung, die Postfix-Version danach. Die meiste Zeit willst du wahrscheinlich die Präfix-Version.

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

for-Schleifen: ein Beispiel

Die Init-Komponente legt normalerweise eine Zählervariable fest, die Bedingung prüft, ob die Schleife fortgesetzt oder beendet werden soll, und die Post-Komponente erhöht normalerweise den Zähler am Ende jeder Wiederholung.

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

Diese Schleife summiert die Zahlen von 1 bis 9 (einschließlich 9).

break und continue

Innerhalb eines Schleifenblocks kannst du das Schlüsselwort break verwenden, um die Ausführung der Schleife vollständig zu stoppen:

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

Im Gegensatz dazu stoppt das Schlüsselwort continue nur die Ausführung der aktuellen Iteration und fährt mit der nächsten fort:

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

Es ist normalerweise einfacher, die Logik der Schleife zu verstehen, wenn die Verwendung von break und continue minimiert oder ganz vermieden wird. Beide Schlüsselwörter überspringen bestimmte Abschnitte des Codes und machen es oft schwieriger, dem Ablauf zu folgen.

Anleitung

In dieser Übung arbeitest du mit Sparkonten. Jedes Jahr wird der Kontostand deines Sparkontos anhand seines Zinssatzes aktualisiert. Der Zinssatz, den deine Bank dir gewährt, hängt davon ab, wie viel Geld auf deinem Konto ist (dem Kontostand):

  • 3,213 % für einen Kontostand von weniger als 0 Dollar (der Kontostand wird negativer).
  • 0,5 % für einen Kontostand von mindestens 0 Dollar und weniger als 1000 Dollar.
  • 1,621 % für einen Kontostand von mindestens 1000 Dollar und weniger als 5000 Dollar.
  • 2,475 % für einen Kontostand von mindestens 5000 Dollar.

Du hast vier Aufgaben, die sich jeweils mit dem Kontostand und seinem Zinssatz befassen.

1. Berechne den Zinssatz

Implementiere die Funktion interest_rate, um den Zinssatz anhand des angegebenen Kontostands zu berechnen:

interest_rate(200.75);
// => 0.5

2. Berechne die Zinsen

Implementiere die Funktion yearly_interest, um die Zinsen anhand des angegebenen Kontostands zu berechnen:

yearly_interest(200.75):
// => 1.003750

3. Berechne die jährliche Aktualisierung des Kontostands

Implementiere die Funktion annual_balance_update, um die jährliche Aktualisierung des Kontostands zu berechnen und dabei den Zinssatz zu berücksichtigen:

annual_balance_update(200.75);
// => 201.75375

4. Berechne die Jahre bis zum Erreichen des gewünschten Kontostands

Implementiere die Funktion years_until_desired_balance, um die Mindestanzahl an Jahren zu berechnen, die nötig ist, um den gewünschten Kontostand zu erreichen. Dabei kommen jedes Jahr Zinsen zum Kontostand hinzu. Das bedeutet, dass der Kontostand nach einem Jahr so aussieht: Anfangskontostand + Zinsen auf den Anfangskontostand. Der Kontostand nach dem zweiten Jahr ist der Kontostand nach einem Jahr + Zinsen auf den Kontostand nach einem Jahr. Und so weiter, bis der Kontostand des aktuellen Jahres größer oder gleich dem Zielkontostand ist.

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

Beachte, dass der zurückgegebene Wert ein int ist.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
C++ Exercism

Bereit, mit Zinsen sind interessant zu starten?

Melde dich bei Exercism an, um C++ mit 19 Konzepte100 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.