Datumsfunktion, HILFE ?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von AvG, 21. März 2006 .

Schlagworte:
  1. 21. März 2006
    Hi Leute, also hier ist meine geschriebene Datumsfunktion. Irgendwie funktioniert sie nicht wirklich, könnte die mal einer checken und mir sagen wo der Fehler liegt ? Wenn ich Tag,Monat und Jahr eingegeben hab, kommt z.B: Der 2.3.2006 ist ein und weiter gehts nicht also bitte einmal prüfen und mir sagen was daran falsch ist.

    /edit: Einige Rechtschreibfehler können drin sein wie z.B: ERfolg oder so, oder THE anstatt THEN.



    MfG



    Program Datum;
    USES crt, DOS;
    VAR Tag,Monat,Jahr,Tagnummer : Integer;
    Frage : CHAR;

    PROCEDURE Eingabe (VAR Tag,Monat,Jahr : Integer);
    VAR Februar : Integer;
    Erfolge : Boolean;

    BEGIN
    Writeln ('Das Programm ermittelt zu einem belibiegen Datum innerhalb');
    Writeln ('des Zeitraumes 1702 bis 2009 den dazugehörigen Wochentag.');
    Writeln ('Geben Sie bitte das Datum ein:');
    Writeln;
    Erfolge := True;
    REPEAT
    IF NOT Erfolg THEN Writeln ('Falsche Eingabe ! Neu eingeben:');
    Write ('Geben Sie den Tag ein:');
    Readln (Tag);
    Write ('geben Sie den Monat ein:');
    Readln (Monat);
    Write ('Geben sie das Jahr ein');
    Readln (Jahr);
    IF Jahr<100 THEN Jahr:=1900+Jahr;
    IF (Jahr<1701) OR (Jahr>2099) THEN Erfolg := False;
    IF MOnat>12 THEN Erfolg :=False;
    CASE Monat OF
    2 : Erfolg:=(Tag<=Febraur);
    4 : Erfolg:=(Tag<=30);
    6 : Erfolg:=(Tag<=30);
    9 : Erfolg:=(Tag<=30);
    11 : Erfolg:=(Tag<=30);
    END;
    UNTIL Erfolg
    END;

    PROCEDURE Berechne (T, M, J : Integer; VAR Wtag : Integer);
    VAR X,Y,Z : Integer;

    BEGIN
    IF M>2 THEN M:=M-2
    ELSE BEGIN
    M:=M+10;
    J;=J-1
    END;
    X:=J MOD 100;
    Z:=J DIV 100;
    Y:=(13*M-1) DIV 5 + X DIV 4 + Z DIV 4;
    Wtag:=(X+Y+T-2*Z) MOD 7
    END;

    PROCEDURE Ausgabe (Tagnummer : Integer)M

    BEGIN
    ClrScr;
    Writeln;Wirteln;Wirteln;
    IF (Tagnummer=5) AND (Tag=13) THEN BEGIN
    Writeln ('An Ihrer Stelle würde ich mich vorsehen, denn der');
    Writeln ('13.', Monat,'.',Jahr,'ist ein Freitag.');
    CASE Tagnummer OF
    0 : Writeln ('Sonntag');
    1 : Writeln ('Monat');
    2 : Writeln ('Dienstag');
    3 : Writeln ('Mittwoch');
    4 : Writeln ('Donnerstag');
    5 : Writeln ('Freitag');
    6 : Writeln ('Samstag');
    END
    END
    EMD;

    BEGIN
    REPEAT
    ClrScr;
    Eingabe (Tag,Monat,Jahr);
    Berechne(Tag,Monat,Jahr,Tagnummer);
    Ausgabe(Tagnummer);
    Writeln;
    Write ('Wünschen Sie eine erneute Berechnung (J/N) ? ');
    READ (Frage)
    UNTIL (Frage = 'N') OR (Frage ='n')
    END.
     
  2. 22. März 2006
    Ich mache grade Praktikum und kenn ich mit dem Programm noch nicht wirklich aus. Hab erst eine Caser verschlüsselung geschrieben, die Datumsfunktion, eine Mehrwersteuerberechnung und eine Zeitansage. Was debuggen ist, weiss ich nich. Aufklärung ?




    MfG
     
  3. 24. März 2006
    Debuggen ist ein Schrittweiser Programmablauf, wobei man Werte analysieren kann. Es wird meistens zur Fehleranalyse verwendet.

    Wiki

    Greetz
     
  4. 25. März 2006
    Eigentlich programmiere ich delphi aber delphi und pascal sind ja miteinander verwandt, also:

    In delphi gibt es einfach den befehl DayofWeek (uses sysutils), der für ein datum im Tdate format
    den Wochentag als integer zurück gibt(1 für Sonntag, 2 für Montag, usw.).

    Zusätzlich gibt es den Befehl LongDayNames der den Wochentag aus dem Integer zurückgibt.

    Das TDate Forma sieht so aus: dd.mm.yyyy .
    In delphi würde das dann ungefähr so aussehen:

    procedure TForm1.Button1Click(Sender: TObject);
    var wochentag: string;
    datum: TDateTime;
    begin
    datum := StrtoDatetime(25.03.2006); //z.B. für 25.03.2006
    wochentag := LongDayNames[DayOfWeek(datum)];
    ShowMessage('Heute ist '+wochentag);
    end;

    Ich weiß nicht ob es die befehle in Pascal gibt, aber ich habe es wenigstens versucht.
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.