Fehlersuche



  • Hallo, es geht um das Programm Schaltjahr bzw. kein Schaltjahr

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    
               cout<<"Geben sie Die Jahreszahl ein: \n"<<endl;
    
    int jahr;
    cin>>jahr;
    if ( ( (jahr%4==0) && (jahr%100!=0) ) || (jahr%400==0) ) {
    
    {
    
            cout<<"Kein Schaltjahr!"<<endl;
    
            }
    else
    {
    
            cout<<"Schaltjahr!"<<endl;
    
    }
    
    }
    

    bei der Zeile 19 zeigt dev-c++ mir einen Klammerfehler
    aber ich sehe keins :S denke vor else bzw nach else ist gemeint. aber wenn ich die geschweiften Klammern da weg nehme, kommen andere Fehler auf.

    LG



  • Rücke den Code doch erst mal richtig ein. Dann siehst Du ihn wahrscheinlich selbst. Also ich habe keine Lust, so einen Code zu lesen, wo noch nicht mal die Einrückung stimmt. Das sollte doch nun jeder Anfänger hin bekommen.



  • Gewöhn Dir mal vernünftige Einrückungen an, dann sieht man den Fehler sofort.



  • Wenn man das mal sauber einrückt, sieht man das auch sofort, wie meine Vorredner es bereits geschrieben haben. Da sieht man auch direkt, dass du einen
    Block komplett unnötig "klammern" wolltest, der bereits in geschweiften Klammern steht.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
      cout<<"Geben sie Die Jahreszahl ein: \n"<<endl;
    
      int jahr;
      cin>>jahr;
      if ( ( (jahr%4==0) && (jahr%100!=0) ) || (jahr%400==0) ) 
      {
        { // hier ein 2. mal einen neuen Block anfangen?!?!?
          cout<<"Kein Schaltjahr!"<<endl;
        }
      else // vor diesem else fehlt anscheinend noch eine schliessende Klammer
      {
        cout<<"Schaltjahr!"<<endl;
      }
    }
    

    Und so, sollte es dann wohl aussehen!

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
      cout<<"Geben sie Die Jahreszahl ein: \n"<<endl;
    
      int jahr;
      cin>>jahr;
      if ( ( (jahr%4==0) && (jahr%100!=0) ) || (jahr%400==0) ) 
      {
        cout<<"Kein Schaltjahr!"<<endl;
      }
      else
      {
        cout<<"Schaltjahr!"<<endl;
      }
    }
    


  • Anfaenger2Anfaenger schrieb:

    Und so, sollte es dann wohl aussehen!

    Ansichtssache, ich finde es übersichtlicher wenn man die Klammern ganz weglässt:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        cout<<"Geben sie Die Jahreszahl ein: \n"<<endl;
    
        int jahr;
        cin>>jahr;
        if ( ( (jahr%4==0) && (jahr%100!=0) ) || (jahr%400==0) ) 
            cout<<"Kein Schaltjahr!"<<endl;
        else
            cout<<"Schaltjahr!"<<endl;
    }
    


  • ich finde es übersichtlicher wenn man die Klammern ganz weglässt

    Dann sollte man aber aufpassen wenn man plötzlich mehr als eine Anweisung in jedem Zweig braucht... Für Anfänger eine fiese Falle.


Log in to reply