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.