Hilfe zur Schaltjahr-Programmierung



  • #include<stdio.h>

    int main(void){

    int Tag, Monat, Jahr,Date;
    int kt[]= {31,28,31,30,31,30,31,31,30,31,30,31};
    
    printf(" Bitte den Tag eingeben:\n");
    scanf("%d",&Tag);
    fflush(stdin);
    printf(" Bitte den Monat eingeben:\n");
    scanf("%d",&Monat);
    fflush(stdin);
    printf(" Bitte den Jahr eingeben:\n");
    scanf("%d",&Jahr);
    
    Date= (Tag + kt[Monat]);
    
    printf("Der %d.%d.%d ist der %d. Tag des Jahres %d.",Tag,Monat,Jahr,Date,Jahr);
    printf("Kalendertage %d",kt[Monat]);
    return 0;
    

    }
    Hallo Community,
    Bin gerade dabei, das Programmieren zu lernen..Warum rechneter er hier nicht mit dem eingegebenen Monat? Sondern nur mit der ersten Variable im Arrays?

    Danke im Vorraus
    Marcel



  • @mn6 sagte in Hilfe zur Schaltjahr-Programmierung:

    Warum rechneter er hier nicht mit dem eingegebenen Monat?

    Tut er das nicht? Woher weißt du das? Was ist die Eingabe, was ist die Ausgabe, was erwartest du?

    Das ist ein C Programm.



  • Der Operator Modulus % mit einer ganzen Zahl und z.B. der Zahl 4, gibt eine ganze Zahl aus, die zur letzten ganzen vor in diesem Beispiel 4 hinzuaddiert werden kann, um die Zahl 4 zu ergeben.

    20 % 6 ergibt 2

    Aber laut Wikipedia müssen zwei weitere (notwendige) Voraussetzungen erfüllt sein, damit eine natürliche Zahl nach dem greogorianischen Kalender (hinreichend) zu den Schaltjahren gezählt werden könnte.

    Edit: Sorry für die mangelhafte Erklärung vom Modulus-Operator 😏 . Zuletzt brauchte ich den Modulus-Operator um durch Indizes zu zirkulieren.


  • Global Moderator |  Mod

    @titan99_ sagte in Hilfe zur Schaltjahr-Programmierung:

    Um festzustellen, ob die Divison einer ganzen Zahl mit der Zahl 4 eine ganze Zahl bleibt, oder ob ein Rest übrig bleibt, gibt es den sog. Operator Modulus %.

    Aber laut Wikipedia müssen zwei weitere (notwendige) Voraussetzungen erfüllt sein, damit eine vernünftige beliebige Zahl nach dem greogorianischen fastis (Kalender) (hinreichend) zu den Schaltjahren gezählt werden könnte.

    ??? Du hast die Frage gelesen?

    @MN6: Beantworte am besten mal die Gegenfrage von @manni66 . Ansonsten fällt als allererstes mal das unsinnige und falsche fflush(stdin) auf, welches undefiniertes Verhalten auslöst und daher allerlei Unsinn verursachen kann. Es steht ja auch direkt vor der Eingabe des Monats, wo die komisches Verhalten auffällt. Ersatzlos streichen!



  • @titan99_ sagte in Hilfe zur Schaltjahr-Programmierung:

    Der Operator Modulus % mit einer ganzen Zahl und z.B. der Zahl 4, gibt eine ganze Zahl aus, die zur letzten ganzen vor in diesem Beispiel 4 hinzuaddiert werden kann, um die Zahl 4 zu ergeben.

    Selig sind die, die ihres Nachbarn Oxen flüssig machen, denn, äh, die sollen ihr Würfelzeug erben. Und äh, gegeben werden soll ihnen, also einem jedem von ihnen, gegeben, jedem von ihnen soll gegeben werden.



  • @mn6

    Was gibt dein Programm aus, wenn du 0 1 0 eingibst?
    Was gibt dein Programm aus, wenn du 0 2 0 eingibst?

    Was erwartest du, was ausgegeben werden soll?

    Was gibt dein Programm aus, wenn du 0 0 0 eingibst?



  • @mn6 sagte in Hilfe zur Schaltjahr-Programmierung:

    Date= (Tag + kt[Monat]);

    damit rechnest du falsch. du musst natürlich alle tage bis zu dem gewählten monat aufsummieren.
    also 29.6.: 31 + 28 + 31+ 30 + 31 und dann noch die 29 dazu.

    bedenke dabei auch, dass du bei arrays mit 0 anfängst, also kt[0] entspricht dem januar, kt[11] dem dezember und kt[12] ist falsch.



  • @swordfish sagte in Hilfe zur Schaltjahr-Programmierung:

    Selig sind die, die ihres Nachbarn Oxen flüssig machen, denn, äh, die sollen ihr Würfelzeug erben. Und äh, gegeben werden soll ihnen, also einem jedem von ihnen, gegeben, jedem von ihnen soll gegeben werden.

    😇 sind die, die wenig 🐂 haben und unter dem 🎲-Zeug leiden. Selig sind die, die ihr 🎲-Zeug 🌧 machen, denn ihnen soll vergeben werden. Vergeben werden soll ihnen, also einem jedem von ihnen, auch gegeben, jedem von ihnen soll restauriertes 🎲-Zeug gegeben werden.