Probleme beim Klammern setzen!
-
ich kappiers nicht
-
OK. Hier der neue Code:
#include <iostream> using namespace std; const char* geschwindue(int zahl_i) //Fehler gefixt { if(zahl_i <= 20) { return("30 Euro, 0 Punkte, kein Fahrverbot"); } else { if(zahl_i > 20 && zahl_i <= 25) { return("40 Euro, 1 Punkte, kein Fahrverbot"); } else { if(zahl_i > 25 && zahl_i <= 40) { return("75 Euro, 3 Punkte, kein Fahrverbot"); } else { if(zahl_i > 40 && zahl_i <= 50) { return("100 Euro, 3 Punkte, 1 Monat Fahrverbot"); } else { cout << "Sie fahren schneller als Ihr Schutzengel fliegt!" << endl; } } } } } //Klammern gefixt int main() { int zahl_i; char wahl; cout << "***Bussgeldberechnung***" << endl; do { cout << "Eingabe der Geschwindigkeitsueberschreitung als ganze Zahl in km/h: " << endl; cin >> zahl_i; cout << endl <<"Die Bussgeldberechnung hat das Folgende ergeben:" << endl; //Rechtschreibefehler gefixt cout << geschwindue(zahl_i) << endl; //Fehler gefixt cout << "Programmwiederholung(j/n)?"; cin >> wahl; } while(wahl == 'j'); cout << "Sie haben das Programm verlassen!" << endl; return 0; }PS: Wie alt bist du eigentlich (nur so aus reiner Neugier)?
-
tobifeli schrieb:
ich kappiers nicht
Im deinem geposteten Code ist in Zeile 13 eine {. Diese wird nie geschlossen, das ist fatal! Jede { braucht auch eine }, sonst ist das Universum nicht im Gleichgewicht und ein riesiges schwarzes Loch taucht auf, was die Welt verschlingt und dann... läuft dein Programm nicht.
Und Es Code ist doch auch super, was gefällt Dir an diesem nicht bzw. was verstehst Du daran nicht? Artikuliere Dich bitte adäquat!
-
Eisflamme schrieb:
tobifeli schrieb:
ich kappiers nicht
Im deinem geposteten Code ist in Zeile 13 eine {. Diese wird nie geschlossen, das ist fatal! Jede { braucht auch eine }, sonst ist das Universum nicht im Gleichgewicht und ein riesiges schwarzes Loch taucht auf, was die Welt verschlingt und dann... läuft dein Programm nicht.
Und Es Code ist doch auch super, was gefällt Dir an diesem nicht bzw. was verstehst Du daran nicht? Artikuliere Dich bitte adäquat!
danke jetzt habs auch ich verstanden
-
EOutOfResources schrieb:
OK. Hier der neue Code:
#include <iostream> using namespace std; const char* geschwindue(int zahl_i) //Fehler gefixt { if(zahl_i <= 20) { return("30 Euro, 0 Punkte, kein Fahrverbot"); } else { if(zahl_i > 20 && zahl_i <= 25) { return("40 Euro, 1 Punkte, kein Fahrverbot"); } else { if(zahl_i > 25 && zahl_i <= 40) { return("75 Euro, 3 Punkte, kein Fahrverbot"); } else { if(zahl_i > 40 && zahl_i <= 50) { return("100 Euro, 3 Punkte, 1 Monat Fahrverbot"); } else { cout << "Sie fahren schneller als Ihr Schutzengel fliegt!" << endl; } } } } } //Klammern gefixt int main() { int zahl_i; char wahl; cout << "***Bussgeldberechnung***" << endl; do { cout << "Eingabe der Geschwindigkeitsueberschreitung als ganze Zahl in km/h: " << endl; cin >> zahl_i; cout << endl <<"Die Bussgeldberechnung hat das Folgende ergeben:" << endl; //Rechtschreibefehler gefixt cout << geschwindue(zahl_i) << endl; //Fehler gefixt cout << "Programmwiederholung(j/n)?"; cin >> wahl; } while(wahl == 'j'); cout << "Sie haben das Programm verlassen!" << endl; return 0; }PS: Wie alt bist du eigentlich (nur so aus reiner Neugier)?
danke und um auf deine Frage zurück zu kommen zu alt andere können das bereits schon in dem alter
-
tobifeli schrieb:
ich kappiers nicht
Wenn du noch nicht einmal das Einrücken verstehst, wird dir hier niemand wirklich helfen können. Du machst es dir ohnehin durch die tiefen Verschachtelungen mehr als schwer.
Entweder verzichtest du in deinen Fall auf die else (da du ohnehin mit return aussteigst), oder verwendest lieber "else if". Zudem muss deine Funktion einen Rückgabewert geben, im letzten else-Fall macht sie dies nicht.
Sprich:
// Entweder const char* geschwindue(int zahl_i) //Fehler gefixt { if(zahl_i <= 20) return "30 Euro, 0 Punkte, kein Fahrverbot"; if(zahl_i > 20 && zahl_i <= 25) return "40 Euro, 1 Punkte, kein Fahrverbot"; if(zahl_i > 25 && zahl_i <= 40) return "75 Euro, 3 Punkte, kein Fahrverbot"; if(zahl_i > 40 && zahl_i <= 50) return "100 Euro, 3 Punkte, 1 Monat Fahrverbot"; return "Sie fahren schneller als Ihr Schutzengel fliegt!"; } // Oder const char* geschwindue(int zahl_i) //Fehler gefixt { if(zahl_i <= 20) return "30 Euro, 0 Punkte, kein Fahrverbot"; else if(zahl_i > 20 && zahl_i <= 25) return "40 Euro, 1 Punkte, kein Fahrverbot"; else if(zahl_i > 25 && zahl_i <= 40) return "75 Euro, 3 Punkte, kein Fahrverbot"; else if(zahl_i > 40 && zahl_i <= 50) return "100 Euro, 3 Punkte, 1 Monat Fahrverbot"; else return "Sie fahren schneller als Ihr Schutzengel fliegt!"; }
-
Die erste Variante sieht chic aus!
-
if-else if-else benutzen!
std::string f( unsigned int Speed ) { if( Speed < 10 ) { return "Glück gehabt"; } else if( Speed > 10 && Speed <= 20 ) { return "30 Euro, keine Punkt, kein Fahrverbot"; } else { return "DAS wird teuer!"; } }Schon deutlich übersichtlicher, oder? Die Verknüpfungen der Bedingungen sind teilweise überflüssig, erhöhen aber das Verständnis.
Edit:
Ach Mist, hatte den Beitrag jetzt ne Stunde offen, da waren wohl alle schneller als ich
-
@DocShoe. bei dir sollte man aber nicht exakt 10 km/h zu schnell fahren...

Warum nicht also einfach
const char * GetSpeedingFineText(unsigned int speed) { if(speed <= 20) return "30 Euro, 0 Punkte, kein Fahrverbot"; if(speed <= 25) return "40 Euro, 1 Punkte, kein Fahrverbot"; if(speed <= 40) return "75 Euro, 3 Punkte, kein Fahrverbot"; if(speed <= 50) return "100 Euro, 3 Punkte, 1 Monat Fahrverbot"; return "Sie fahren schneller als Ihr Schutzengel fliegt!"; }?
-
War ein Test, um zu gucken, ob auch alle aufpassen
