In C++ kannst du Werte mit den Vergleichsoperatoren vergleichen.
| Vergleich | Operator |
|---|---|
| gleich | == |
| ungleich | != |
| kleiner | < |
| kleiner oder gleich | <= |
| größer | > |
| größer oder gleich | >= |
Das Ergebnis dieser Vergleiche ist immer ein boolescher Wert:
int a{3};
bool eq1 = a != 4; // true
bool eq2 = a > 5; // false
Die Operatoren == und != prüfen, ob ein Wert gleich einem anderen ist oder nicht.
Hier sind einige gängige Beispiele:
bool eq3 = 2 == 3; // false, integer comparison
bool eq4 = 2.1 != 2.2; // true, float comparison
bool eq5 = "hello" == "hello"; // true, string comparison
Die anderen Operatoren prüfen, ob ein Wert größer als (>), größer oder gleich (>=), kleiner als (<) oder kleiner oder gleich (<=) einem anderen Wert ist.
Diese Art des Vergleichs gibt es für Zahlen und Strings.
Beim Vergleichen von Strings wird die Wörterbuchordnung (auch lexikografische Ordnung genannt) verwendet.
bool eq6 = 2 > 3; // false, integer comparison
bool eq7 = 1.2 < 1.3; // true, float comparison
bool eq8 = "Hello" < "World"; // true, string comparison
Bedingte Anweisungen in C++ ähneln denen in anderen Sprachen.
Der zugrunde liegende Typ jeder bedingten Operation ist der Typ bool, der den Wert true oder false annehmen kann.
Bedingte Anweisungen werden oft als Ablaufsteuerung verwendet, um verschiedene Bedingungen zu prüfen.
Du kannst eine if-Anweisung verwenden, die ihren Code ausführt, wenn die zugrunde liegende Bedingung true ist, etwa so:
std::string value{"val"};
if (value == "val") {
return "was val";
}
Wenn mehr als ein Fall abgedeckt werden muss, kannst du viele if-Anweisungen mit den else if- und else-Anweisungen verketten.
int number{33};
if (number > 0) {
return "positive";
} else if (number < 0) {
return "negative";
} else {
return "zero";
}
Seit C++17 können if-Anweisungen auch eine kurze Initialisierungsanweisung enthalten, mit der du eine oder mehrere Variablen für die if-Anweisung initialisieren kannst. Zum Beispiel:
int num{7};
if (int v{2 * num}; v > 10) {
return v;
} else {
return num;
}
// => 14
Hinweis: Auf Variablen, die in der Initialisierung erstellt wurden, kannst du nach dem Ende der if-Anweisung nicht mehr zugreifen.
In dieser Übung schreibst du etwas Code, der dir bei der Vorbereitung auf den Kauf eines Fahrzeugs hilft.
Du hast drei Aufgaben: eine, um festzustellen, ob du einen Führerschein brauchst, eine, die dir bei der Wahl zwischen zwei Fahrzeugen hilft, und eine, um den angemessenen Preis für ein gebrauchtes Fahrzeug zu schätzen.
Einige Fahrzeugarten erfordern zum Führen einen Führerschein.
Geh davon aus, dass nur die Arten "car" und "truck" einen Führerschein erfordern; alles andere kann ohne Führerschein gefahren werden.
Implementiere die Funktion needs_license(kind), die die Fahrzeugart als String entgegennimmt und einen booleschen Wert zurückgibt, der angibt, ob du für diese Fahrzeugart einen Führerschein brauchst.
needs_license("car")
// => true
needs_license("bike")
// => false
needs_license("truck")
// => true
Du vergleichst die Fahrzeuge, die dir zur Verfügung stehen.
Am Ende bleiben zwei Optionen übrig, aber für die endgültige Entscheidung brauchst du Hilfe.
Dafür implementierst du die Funktion choose_vehicle(option1, option2), die zwei Fahrzeuge als Argumente entgegennimmt und eine Entscheidung mit der Option zurückgibt, die in lexikografischer Reihenfolge zuerst kommt.
choose_vehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
choose_vehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
Der zurückgegebene String sollte dem Muster „<CHOSEN_VEHICLE> is clearly the better choice." folgen, wobei <CHOSEN_VEHICLE> die gewählte Option aus den übergebenen Argumenten ist.
Jetzt, wo du dich entschieden hast, willst du sichergehen, dass du beim Händler einen fairen Preis bekommst. Da du ein gebrauchtes Fahrzeug kaufen willst, hängt der Preis davon ab, wie alt das Fahrzeug ist. Für eine grobe Schätzung geh davon aus, dass das Fahrzeug 80 % des ursprünglichen Neupreises kostet, wenn es weniger als 3 Jahre alt ist. Ist es mindestens 10 Jahre alt, kostet es 50 %. Ist das Fahrzeug mindestens 3 Jahre alt, aber weniger als 10 Jahre, kostet es 70 % des ursprünglichen Preises.
Implementiere die Funktion calculate_resell_price(original_price, age), die diese Logik mit if, else if und else umsetzt (es gibt auch andere Möglichkeiten, wenn du üben möchtest).
Sie nimmt den ursprünglichen Preis und das Alter des Fahrzeugs als Argumente entgegen und gibt den geschätzten Preis beim Händler zurück.
calculate_resell_price(1000, 1)
// => 800
calculate_resell_price(1000, 5)
// => 700
calculate_resell_price(1000.0, 15)
// => 500
Hinweis: Der Rückgabewert hat den Typ
double.
Melde dich bei Exercism an, um C++ mit 19 Konzepte100 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.