Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
Delphi 6 Professional
|
Re: programmiertechnisch besser?
30. Mär 2004, 18:08
Naja Du hast Dich zwar nicht mehr gemeldet, aber ich geh mal davon aus,
dass Du einfach nur die Differenz zwischen zwei Zeiten ausgeben willst.
Also etwas verkürzt könnte Dein Code so aussehen:
Code:
program Zeitzeugsmitdensekundennochdazu;
{$APPTYPE CONSOLE}
uses
sysutils;
Var
Std, Sek, Min : BYTE;
Wert1, Wert2, Diverenz : INTEGER;
Procedure Eingabe(time, part : STRING; max : byte; VAR wert : BYTE);
BEGIN
REPEAT
WRITELN('Bitte gegen Sie die ', time ,' der ' , part , ' Zeit ein!');
READLN(wert);
UNTIL wert < max;
END;
begin
Eingabe('Stunden', 'ersten', 25, Std);
Eingabe('Minuten', 'ersten', 60, Min);
Eingabe('Sekunden', 'ersten', 60, Sek);
wert1 := (std * 60 * 60) + (Min * 60) + Sek;
Eingabe('Stunden', 'zweiten', 25, Std);
Eingabe('Minuten', 'zweiten', 60, Min);
Eingabe('Sekunden', 'zweiten', 60, Sek);
wert2 := (std * 60 * 60) + (Min * 60) + Sek;
IF wert1 >= wert2 THEN
Diverenz := wert1 - wert2 ELSE Diverenz := wert2 - wert1;
std := (Diverenz DIV 60) DIV 60;
min := (Diverenz - (std * 60 * 60)) DIV 60;
sek := Diverenz - ((std * 60 * 60) + (min * 60));
write ('Die Differrenz betraegt ', Std, ' Stunde(n) und ', min, ' Minute(n) und ', sek, ' Sekunde(n).');
readln;
end.
Nur weiß ich nicht genau welchen Compiler Du nutzt und welche Datentypen er unterstützt. Du brauchst einen Typ der den wert 93660 speichern kann, denn das ist die Maximale Sekunden Anzahl die eine Deiner Zeiten annehmen kann. Also ab Delphi 2 dürfte es keine Probleme mehr geben, aber falls Du mit Turbo Pascal(wo Integer -32768 bis +32767 speichern kann) compilierts, solltest Du doch REAL nehmen, dann müssen aber alle Deine Variablen REAL sein und Du musst das DIV durch "/" ersetzen.
Alles klar?! *g*
-> www.Phillsoft.de
Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
|