AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

programmiertechnisch besser?

Ein Thema von dR4g0N · begonnen am 25. Mär 2004 · letzter Beitrag vom 31. Mär 2004
Antwort Antwort
dR4g0N
(Gast)

n/a Beiträge
 
#1

programmiertechnisch besser?

  Alt 25. Mär 2004, 14:11
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.
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#2

Re: programmiertechnisch besser?

  Alt 30. Mär 2004, 14:51
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.
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#3

Re: programmiertechnisch besser?

  Alt 30. Mär 2004, 17: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!
  Mit Zitat antworten Zitat
dR4g0N
(Gast)

n/a Beiträge
 
#4

Re: programmiertechnisch besser?

  Alt 31. Mär 2004, 23:29
jo sry hatte nen paar probs mit dem rechner ^^ ähmm wegem dem compiler sollte es kein prob darstellen ... big thx für deine filfe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz