kalender



  • Hallo zusammen,

    Mir ist eben bei einer Programmieraufgabe ein problem aufgetaucht. und zwar das deklarieren von den Monaten.

    Also.. die Aufgabe heisst: Eim in der Form TT.MM.JJJJ einzugebendes Datum soll auf die Plausibilität (Richtigkeit) geprüft werden. Diese prüfung soll solange für einzugebende Daten wiederholt werde, bis das zuletzt eingegebene Datum plausibel ist.

    Schaltjahre müssen in der Überprüfung mit einbezogen werden.

    Im Ergebnis der Prüfung soll dieses Prüfmodul informieren, welches Problem es gab(z.B.: "Monat zu groß" "keine 31 Tage im April!",..)

    Das bereitet mit die schwierigkeit. ich hab mir das so überlegt:
    Ich muss das ja so machen das wenn man bsp. 01 für Januar eingibt das der Compiler weiß das 01 januar ist und das Januar 31 Tage hat.

    int januar;
    januar=01; // monat bei der eingabe
    januar=31; // laenge des monats

    Hat jemand ne Idee wie ich das machen kann ?

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

    void main ()
    
    {
    
    int tag,monat,jahr;
    int // MONATE DEKLARIEREN
    signed char taste ='j';
    
    while(taste=='j')
    {
    
    printf("Bitte geben Sie das Datum in der >Form TT.MM.JJJJ ein!");
    
    printf("Bitte Geben Sie das jahr ein!"); // Aufforderung zur Jahres Eingabe!
    scanf("%i",& jahr);
    
    printf("Bitte geben Sie ein Monat ein!"); // Aufforderung zur Monat Eingabe!
    scanf("%i",& monat);
    
    printf("Bitte geben Sie ein Tag ein!"); // Aufforderung zur Tag Eingabe!
    scanf("%i",&tag);
    
    // IN BEARBEITUNG!
    
    if(jahr%4)
    {
    printf("Es ist ein Schaltjahr gegeben!");
    }
    
    printf(" \n \t Datum ist Plausibel \n");
    
    // IN BEARBEITUNG!
    
        printf("wollen Sie den den Prozess wiederholen \n Dann tätigen Sie für Ja die Taste j und für Nein die Taste n");
    }
    
    system("Pause");
    
    }
    

    herzlichen dank!

    lg hasso



  • Ich würde es mit einem Array versuchen Januar[1]

    januar[0]=01
    januar[1]=31

    kann aber auch Quatsch sein korrigiert mich wenns so ist



  • ps:

    Alle Jahre, die durch 4 ohne Rest teilbar sind, sind Schaltjahre.
    Alle Jahre, die durch 100 ohne Rest teilbar sind, sind keine Schaltjahre.
    Alle Jahre, die durch 400 ohne Rest teilbar sind, sind wiederum Schaltjahre.

    quelle: wiki



  • Hallo,

    Könntest du das mit dem Array etwas ausführlicher erklären..?
    Mann wird ja aufgefordet tag , monat , Jahr einzugeben.

    wenn man für tag 16 eingibt dann müsste man das doch irgendwie dem tag zuordnen ..

    sprich :tag januar[1]=31

    irgendwie 🙄
    ....

    hope schrieb:

    Alle Jahre, die durch 4 ohne Rest teilbar sind, sind Schaltjahre.
    quelle: wiki

    SO das würd heißen 2008/4= 502 also schaltjahr

    hope schrieb:

    Alle Jahre, die durch 100 ohne Rest teilbar sind, sind keine Schaltjahre.

    wenn ich 2000/100 teile erhalte ich als ergebnis 20 und 20 hat kein rest das würd heißen das das 2000 kein Schaltjahr wär . Obwohls eins ist!?

    hope schrieb:

    Alle Jahre, die durch 400 ohne Rest teilbar sind, sind wiederum Schaltjahre.

    das selbe hier : 2008 /4 = 5.02 Es ist ein rest gegeben..

    Da stimmt doch etwas nicht oder?

    zweites Problem hat sich gelöst!

    Die drei Schaltjahr-Regeln:

    1.) Ist eine Jahreszahl durch vier teilbar, ist es ein Schaltjahr.
    2.) Ist sie durch vier und durch 100 teilbar, ist es kein Schaltjahr.
    3.) Ist sie durch vier, durch 100, aber auch durch 400 teilbar, ist es wiederum ein Schaltjahr.

    Das Jahr 2000 war ein gutes Beispiel:

    2000 war durch vier teilbar, sollte also ein Schaltjahr sein. Es ist aber auch durch 100 teilbar und wäre somit eigentlich kein Schaltjahr. Da sich 2000 aber auch durch 400 teilen lässt, war das Jahr 2000 ein Schaltjahr.

    Das Jahr 2004 ist da wesentlich einfacher: 2004 ist durch vier teilbar, aber nicht durch 100 oder durch 400 - ein klassisches Schaltjahr also!

    quelle:http://www.wasistwas.de/wissenschaft/alle-artikel/artikel/link//5ef9fba9cc/article/2004-ein-schaltjahr-warum.html?tx_ttnews[backPid]=63

    somit nur noch problem einsss... :(:( 😕

    lg hasso



  • @hasso: hab zwar nichts zur Frage beizutragen, aber mir ist öfters aufgefallen, dass du die main Funktion falsch deklarierst. Die Main Funktion ist nicht von Typ void sondern von Typ int. Und das ist ein großer Unterschied.


Anmelden zum Antworten