Erdkunde steht auf dem Stundenplan, denn in C++ widmen wir uns wieder dem Länderquiz…
Das C++ Länderquiz Version 1:
#include <iostream>
int main()
{
std::string antwort01;
std::string antwort02;
std::string antwort03;
std::cout << "Was ist die Hauptstadt von Deutschland?\n";
std::cin >> antwort01;
if(antwort01 == "Berlin"){
std::cout << "Richtig. Was ist die Haupstadt von Frankreich?\n";
std::cin >> antwort02;
}
if(antwort02 == "Paris"){
std::cout << "Richtig. Was ist die Haupstadt von Spanien?\n";
std::cin >> antwort03;
}
if(antwort03 == "Madrid"){
std::cout << "Richtig. Du kennst dich sehr gut in Erdkunde aus.\n";
}
return 0;
}
Was macht der Quellcode eigentlich?
Die Grundidee bei diesem Quellcode besteht darin am Anfang die string Variablen für die Antworten zu erstellen. Die Abfrage ist dann so gebaut, dass die erste Frage gestellt wird und dann die jeweilige Variable durch Benutzereingabe gefüllt wird. Wenn die Benutzereingabe richtig ist, geht es mit der nächsten Frage weiter.
Dieser Programmablauf erscheint mir hier auch sinnvoll. Er ist einfach und nachvollziehbar. Das Programm hat aber natürlich auch (noch) einige Fehler und Schwachpunkte.
Der erste Schwachpunkt ist die Reaktion des Programms auf Fehler und Falscheingaben. Das Programm wird sofort beendet wenn etwa statt “Berlin“ mit “berlin“ geantwortet wird.
Eine Fehlermeldung könnte sicher per if-else Anweisung einfach zugefügt werden. Doch auch dann wäre das Programm noch nicht ganz so wie es sein sollte.
if(antwort01 == "Berlin"){
std::cout << "Richtig. Was ist die Haupstadt von Frankreich?\n";
std::cin >> antwort02;
}
else {
std::cout << "Leider haben Sie nicht die richtige Hauptstadt von Deutschland eingegeben\n";
}
Was würde nun mit einer Falscheingabe passieren? Würde das Programm geöffnet bleiben? Die Antwort lautet natürlich “Nein“. Aber es würden auch alle folgenden else-Zweige ausgegeben. Um diesen C++ Code jetzt aber einfach zu halten, werde ich keine weiteren Dinge zufügen und mich im nächsten C++ Artikel um Version 2 vom Länderquiz kümmern.