![]() |
programmiertechnisch besser?
Also habe wieder ein ganz effes Konsolenprogramm geschrieben und wollt fragen ob man vom Code was vereinfachen kann?
Also man rechnet die Differenz von 2 zeiten aus.
Delphi-Quellcode:
program Zeitzeugsmitdensekundennochdazu;
{$APPTYPE CONSOLE} uses sysutils; Var Std1, Std2, Sek1, Sek2, Min1, Min2, Wert1, Wert2, Wert3, Wert4, ZEg, ZEg2, Egmin, Egstd, Egsek : Real; begin repeat writeln ('Bitte geben sie die Stunden der ersten Zeit ein!'); readln (Std1); until std1 < 25; repeat writeln ('Bitte geben sie die Minuten der ersten Zeit ein!'); readln (Min1); until Min1 < 60; repeat writeln ('Bitte geben sie die Sekunden der ersten Zeit ein!'); readln (Sek1); until Sek1 < 60; repeat writeln ('Bitte geben sie die Stunden der zweiten Zeit ein!'); readln (Std2); until Std2 < 25; repeat writeln ('Bitte geben sie die Minuten der zweiten Zeit ein!'); readln (Min2); until Min2 < 60; repeat writeln ('Bitte geben sie die Sekunden der zweiten Zeit ein!'); readln (Sek2); until Sek2 < 60; if Std1 > Std2 then begin Wert1 := Std1 + (Min1/60); Wert2 := Std2 + (Min2/60); Wert3 := ((Min1*100)/60) + (Sek1/60); Wert4 := ((Min2*100)/60) + (Sek2/60); ZEg := Wert1 - Wert2; ZEg2 := Wert3 - Wert4; Egstd :=int(ZEg); Egmin :=(ZEg-int(ZEg))*60; Egsek :=(ZEg2 - int(Zeg2)) * 60; write ('Die Differrenz betraegt ', Egstd:0:1, ' Stunde(n) und ', Egmin:0:1, ' Minute(n) und ', Egsek:0:1, ' Sekunde(n).'); end; if Std1 < Std2 then begin Wert1 := Std1 + (Min1/60); Wert2 := Std2 + (Min2/60); if sek1 < sek2 Then begin Wert3 := ((Min1*100)/60) + (Sek1/60); Wert4 := ((Min2*100)/60) + (Sek2/60); ZEg2 := Wert4 - Wert3; end; ZEg := Wert2 - Wert1; Egstd :=int(ZEg); Egmin :=(ZEg-int(ZEg))*60; Egsek :=(ZEg2 - int(Zeg2)) * 60; write ('Die Differrenz betraegt ', Egstd:0:1, ' Stunde(n) und ', Egmin:0:1, ' Minute(n) und ', Egsek:0:1, ' Sekunde(n).'); end; readln; end. |
Re: programmiertechnisch besser?
Ich verstehe nicht ganz, was dein Programm für eine Aufgabe haben soll...
kannst Du vielleicht mal erklären, was der Zweck ist, vielleicht lässt sich so erkännen, ob man was verbessern kann. |
Re: programmiertechnisch besser?
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:
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.
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. Alles klar?! *g* |
Re: programmiertechnisch besser?
jo sry hatte nen paar probs mit dem rechner ^^ ähmm wegem dem compiler sollte es kein prob darstellen ... big thx für deine filfe :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz