Probleme beim Klammern setzen!



  • Dein Code (überarbeitet):

    #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; 
    }
    


  • Die Funktion sollte einen const char* zurückgeben.



  • EOutOfResources schrieb:

    Dein Code:

    #include <iostream> 
    
    using namespace std; 
    
    char* geschwindue (int zahl_i); 
    char* geschwindue (int zahl_i) 
    
    { 
    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; 
    
    } 
    } 
    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; 
    cout<<"Die Bussgeldberechnung hat das folgende ergeben:"<<endl; 
    cout<<geschwindue(int zahl_i)<<endl; 
    cout<<"Programmwiederholung(j/n)? "; 
    cin>>wahl; 
    }while(wahl=='j'); 
    cout<<"Sie haben das Programm verlassen!!"<<endl; 
    
    return 0; 
    }
    

    kannst du mir vielleicht auch sagen wo bei mir der Fehler liegt
    ich wär dir mit dank verbunden



  • Rück doch Mal anständig ein. Man schreibt nicht:

    int main()
    {
    if(bla)
    {
    // do
    }
    }
    

    sondern:

    int main()
    {
        if(bla)
        {
            // do
        }
    }
    

    Du hast eine { zu viel und zwar in Zeile 13 und das hättest Du auch selbst gesehen, wenn Du anständig eingerückt hättest. Tue dies nun und poste Dein Ergebnis! 🙂



  • In meinem Post habe ich die Einrückung und die Fehler gefixt. Versuche es jetzt mal.



  • 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 😉


Anmelden zum Antworten