Problem bei Schaltjahr-Überprüfung



  • Hey

    Es ist mir ja fast schon peinlich hier nach soetwas zu fragen, aber
    ich komm auf den Fehler einfach nicht drauf .. -.-

    Ich möchte in einer Funktion die ein Jahr übergeben bekommt , prüfen ob
    es sich um ein Schaltjahr handelt..

    Ein Schaltjahr ist ja immer wenn sich das Jahr durch 4 teilen lässt, jedoch aber
    nicht durch 100 aber wiederum durch 400 schon.

    Hier mal der Code:

    int schaltjahr(int jahr)    {
        if((jahr%4 == 0) && (jahr%100 != 0) && (jahr%400 == 0))
            return 1;
        else
            return 0;
    }
    

    Findet ihr den Fehler im Programm, oder hab ich einen einfachen Denkfehler??

    Falls hier wirklich kein Fehler drinnen ist, müsste ich nochmal im Rest
    des Programmes nach Fehler suchen, jedoch im Debugger ist der Fehler
    eindeutig hier weil er bei der Eingabe von 1996 oder 2000 immer in den
    else-Zweig springt obwohl diese Jahre ja Schaltjahre sind...

    mfg
    noelino



  • Eine UND-Verknüpfung wird nur dann wahr, wenn alle Teilausdrücke wahr sind - bei der von dir verwendeten Kombination kann das nicht wahr werden. Du solltest mal über ODER nachdenken:

    if( (j%4 == 0 && j%100!=0) || j%400==0)
    {
      ...
    }
    


  • achja.. 😃

    Vielen Dank für die schnelle Antwort !!

    mfg



  • int schaltjahr(int jahr) {
    	return ((jahr%4==0) && (jahr%100!=0)) || (jahr%400==0);
    }
    


  • Ich habe die aufgabe erhalten ein C++ Programm zu schreiben nach einem Struktogram.
    Ich habe es versucht jedoch schaltet mir das Programm immer schnell ab. Kann mir jemand weiterhelfen?

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main(int argc, char *argv[])

    {
    int jahr=0;
    printf("Geben sie die Jahreszahl ein:");
    scanf("%d", &jahr);

    if (jahr % 400 == 0 )

    printf ("Es ist ein Schaltjahr\n");

    else if ( jahr % 100 == 0 )
    {
    printf ("Es ist KEIN Schaltjahr\n");
    }

    else if ( jahr % 4 == 0)
    {
    printf("Es ist ein Schaltjahr:");
    }
    else
    printf("Es ist ein Schaltjahr:");

    return 0;
    }



  • Für C++ bist du hier falsch, hier ist C.


Anmelden zum Antworten