#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. + Multi-Zitat Zitieren
#3 22. März 2006 Debug dein Prog doch einfach oder geht das bei pascal nicht ? + Multi-Zitat Zitieren
#4 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 + Multi-Zitat Zitieren
#5 24. März 2006 Debuggen ist ein Schrittweiser Programmablauf, wobei man Werte analysieren kann. Es wird meistens zur Fehleranalyse verwendet. Wiki Greetz + Multi-Zitat Zitieren
#6 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. + Multi-Zitat Zitieren