#include #include // für numeric_limits #include // für fixed und setprecision #include double berechneKosten(int stunden) { double kosten = 0.0; switch (stunden) { case 1: kosten = 3.00; break; case 2: kosten = 3.00 + 2.50; // 5,50 € break; case 3: kosten = 3.00 + 2.50 + 2.00; // 7,50 € break; default: if (stunden >= 4) { kosten = 3.00 + 2.50 + 2.00; // erste 3 Stunden = 7,50 € kosten += (stunden - 3) * 1.00; // ab 4. Stunde je 1,00 € } else { // Für 0 oder negative Werte: 0 € (wird aber in der Eingabe schon abgefangen) kosten = 0.0; } break; } return kosten; } int main() { SetConsoleOutputCP(CP_UTF8); std::cout << "=== Ticketautomat Parkhaus Stadt Nürnberg ===\n\n"; std::cout << "Tarife:\n" << " 1. Stunde: 3,00 €\n" << " 2. Stunde: 2,50 €\n" << " 3. Stunde: 2,00 €\n" << " ab 4. Stunde: jede weitere Stunde 1,00 €\n\n"; bool weiter = true; while (weiter) { int stunden = 0; // Eingabe mit Validierung while (true) { std::cout << "Bitte geben Sie die gewünschte Parkdauer in vollen Stunden ein (1 - 24): "; if (std::cin >> stunden && stunden >= 1 && stunden <= 24) { break; // gültige Eingabe } else { std::cout << "Ungueltige Eingabe. Bitte eine ganze Zahl zwischen 1 und 24 eingeben.\n"; std::cin.clear(); std::cin.ignore(std::numeric_limits::max(), '\n'); } } double kosten = berechneKosten(stunden); std::cout << std::fixed << std::setprecision(2); std::cout << "\n=== Zusammenfassung ===\n"; std::cout << "Gewaehlte Parkdauer: " << stunden << " Stunde(n)\n"; std::cout << "Gesamtkosten: " << kosten << " €\n"; std::cout << "=======================\n\n"; char auswahl; std::cout << "Moechten Sie ein weiteres Ticket berechnen? (j/n): "; std::cin >> auswahl; std::cin.ignore(std::numeric_limits::max(), '\n'); if (auswahl != 'j' && auswahl != 'J') { weiter = false; } std::cout << "\n"; } std::cout << "Vielen Dank! Gute Fahrt.\n"; return 0; }