80 lines
2.5 KiB
C++
80 lines
2.5 KiB
C++
|
|
#include <iostream>
|
|
#include <limits> // für numeric_limits
|
|
#include <iomanip> // für fixed und setprecision
|
|
#include <windows.h>
|
|
|
|
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<std::streamsize>::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<std::streamsize>::max(), '\n');
|
|
if (auswahl != 'j' && auswahl != 'J') {
|
|
weiter = false;
|
|
}
|
|
std::cout << "\n";
|
|
}
|
|
|
|
std::cout << "Vielen Dank! Gute Fahrt.\n";
|
|
return 0;
|
|
}
|