Autor Beitrag
TobiHH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

XP Pro und Vista Ultimate
Delphi 7
BeitragVerfasst: Mi 08.10.08 17:41 
Nabend zusammen

Eigentlich hat unsere komplette Klasse ein Problem mit diesere Aufgabe. Wir schreiben darüber bald eine Arbeit und keiner hat eine Ahnung, da dachte ich, dass ich mich hier im Forum anmelde und nach Hilfe suche.

Ich fahr dann mal mit der Programmbeschreibung fort.
Zitat:
Ein Programm soll nach Eingabe von Sekunden ausrechnen, wie viele Stunden, Minuten und Sikunden das sind. Dafür können die Operatoren DIV und MOD genutzt werden.

Aufgabenbeschreibung:
Es sind Prozeduren anzufertigen für die Umrechnung und für die Ausgabe. Zwei Funktionen beinhalten die Umrechnung mit den Operatoren DIV und MOD.

Beim Klicken auf den Button Umrechnen werden die Eingabe eingelesen und die Prozeduren und Funktionen aufgerufen.
Deklarieren und codieren Sie die Prozeduren Umrechnen und Ausgabe, die Funktionen Ganzzahl und Rest. Schreiben Sie die Ereignisbehandlungsroutinen für die Button (Umrechnen und Beenden).


So soll das Programm aussehen.
img3.imagebanana.com...w/1ndxgng/delphi.JPG
Habe bei dem Screenshot mal ein paar Beispielwerte eingegeben, wie es aussehen soll.

Das Problem liegt nicht beim Einlesen oder Ausgeben der Zahlen, eigentlich nur bei der Verarbeitung.
Vielleicht könnte mit ja jemand bei der Prozedur für die Verarbeitung helfen. In Form einer Gut verständlichen Anleitung oder das Beste wäre natürlich das Listing für die Verarbeitung, den Rest würde ich probieren mir selbst zu erarbeiten.
Ich hoffe es kann jemand helfen.
Wäre echt klasse.

Gruß Tobi


Zuletzt bearbeitet von TobiHH am Sa 11.10.08 05:38, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 18:02 
Hallo und :welcome: im Forum,

ja, dann sag doch mal wo das Problem liegt? Weißt du / ihr nicht was div und mod machen? Weißt du / ihr nicht wie die hier zu benutzen sind? Wie weit seid ihr gekommen, also was habt ihr?

Und wenn ihr wirklich alle damit ein Problem habt, dann könnt ihr doch sicherlich darüber mit eurem Lehrer reden, oder?
TobiHH Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

XP Pro und Vista Ultimate
Delphi 7
BeitragVerfasst: Mi 08.10.08 18:09 
Wir wissen nicht wie wir DIV und MOD anwenden sollen bzw. wie es funktioniert. Das Problem liegt darin das unsere Lehrerin meint, wir sind so schlecht und wir müssen das selber hinbekommen.

Das Einlesen der ersten Zahl (die Sekunden) ist nicht das Problem. Bloss die Verarbeitung mit der Zahl.
So wie ich das Verstehe soll quasi mit DIV und MOD geteilt werden, sodass keine Kommazahlen herraus kommen.


Mit der Lehrerin ist reden nicht drin, man wird dann als Dumm bezeichnet und soll sich einen Ausbildungsplatz suchen. Manche Leute hasst sich auch auf den Tod.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.10.08 18:10 
Nochmal kurz zur Erklärung der beiden Funktionen:
DIV gibt das Ergebnis einer ganzzahligen Division zurück.
MOD gibt den Rest einer ganzzahligen Division zurück.

Man kennt das noch aus der Grundschule: 7 / 3 = 2 Rest 1
Die 2 ist also das Ergebnis von 7 div 3 und der Rest 1 ist das Ergebnis von 7 mod 3.


Zuletzt bearbeitet von DeddyH am Do 16.10.08 09:26, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 18:19 
Und mit diesem Wissen überlege mal wie du selbst die Umwandlung machen würdest, egal ob im Kopf, auf dem Papier oder mit dem Taschenrechner. Wie würdest du vorgehen?

Und wenn dir das und die Erklärung von user profile iconDeddyH klar ist, dann sollte auch klar sein wo du dabei div und mod brauchst. ;-)
TobiHH Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

XP Pro und Vista Ultimate
Delphi 7
BeitragVerfasst: Mi 08.10.08 18:19 
Das leuchtet mir jetzt auch ein wenig ein ;)

Bloss wie wende ich das an?

Ich müsste ja die die eingelesende Zahl irgendwie damit verarbeiten. Wie sieht den der Code dafür aus?

Vielen Dank schonmal für eure schnellen Antworten.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 18:23 
Dann schreib doch mal wie du selbst ohne es zu programmieren vorgehen würdest.
Du hast jetzt zum Beispiel 9537 Sekunden. Was machst du jetzt?
TobiHH Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

XP Pro und Vista Ultimate
Delphi 7
BeitragVerfasst: Mi 08.10.08 18:37 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

Du hast jetzt zum Beispiel 9537 Sekunden. Was machst du jetzt?


Ich würde die 9537/60 teilen um die volle Minutenzahl zu bekommen, die ich dann in Stunden umrechnen kann, oder?
Da bleibt dann ein Rest, den würde ich dann wieder Durch 60 teilen.


Irgendwie hab ich aber mitlerweile eine Denkblockade. :x
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 18:45 
So, du teilst also durch 60 --> 9537 div 60 = 158.
Der Rest: 9537 mod 60 = 57.
Also hast du 9537 div 60 = 158 Minuten und 9537 mod 60 = 57 Sekunden.

Und jetzt musst du mit diesen Ergebnissen weitermachen.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.10.08 18:51 
Da kann man auch gut mit Konstanten arbeiten.
ausblenden Delphi-Quelltext
1:
2:
3:
const SecsPerMinute  = 60;
      MinutesPerHour = SecsPerMinute * 60;
      HoursPerDay    = MinutesPerHour * 24;
TobiHH Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

XP Pro und Vista Ultimate
Delphi 7
BeitragVerfasst: Mi 08.10.08 18:53 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
So, du teilst also durch 60 --> 9537 div 60 = 158.
Der Rest: 9537 mod 60 = 57.
Also hast du 9537 div 60 = 158 Minuten und 9537 mod 60 = 57 Sekunden.

Und jetzt musst du mit diesen Ergebnissen weitermachen.

Wenn ich das jetzt so richtig verstehe
158/60 bzw. 158 div 60
Den Rest dann also 158 mod 60 = 38 Sekunden? //Edit: Minuten



Ich glaube da sind Constanten nicht so erwünscht, da das ursprüngliche Thema Prozeduren und Funktionen ist, aber da merkt man bestimmt wieder, das ich keine Ahnung hab. :D


Zuletzt bearbeitet von TobiHH am Mi 08.10.08 18:55, insgesamt 2-mal bearbeitet
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.10.08 18:54 
38 Minuten!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 18:59 
Du musst das dir wirklich nur selbst überlegen wie du vorgehst. Das ist Grundschulmathematik.
9537 Sekunden geteilt durch 60 Sekunden pro Minute sind 158 Minuten und Rest 57 Sekunden, 158 Minuten geteilt durch 60 Minuten pro Stunde sind 2 Stunden und Rest 38 Minuten.
Und wenn mehr als 24 Stunden vorkommen können musst du nochmal weitermachen. 2 Stunden geteilt durch 24 Stunden pro Tag sind 0 Tage und Rest 2 Stunden.
TobiHH Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

XP Pro und Vista Ultimate
Delphi 7
BeitragVerfasst: Mi 08.10.08 21:47 
So, hab mich eben noch einmal rangesetzt. Es passt auch einigermaßen, ich habe bloss irgendwo einen Denkfehler. (liegt vielleicht daran, dass ich gerade voll Müde bin und das eigentlich noch fertig bekommen möchte. :D )

Ich poste euch mal den Code.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure umrechnen;
VAR Stunden, Minuten, Sekunden, SekundenEin, Teiler:integer;
begin
      SekundenEin := 9537;
      Teiler := 60;

      Minuten := SekundenEin DIV Teiler;
      Stunden := Minuten DIV Teiler;
      Sekunden := Minuten MOD Teiler;


      Form1.EditStunden.text:=FloatToStr (Stunden);
      Form1.EditMinuten.text:=FloatToStr (Minuten);
      Form1.EditSekunden.text:=FloatToStr (Sekunden);

end;

Ausgegeben werden 2 Stunden, 158 Minuten und 38 Sekunden.


Eins muss ich sagen, ihr seit echt klasse. :wink:

Moderiert von user profile iconNarses: Quote- durch Delphi-Tags ersetzt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 21:53 
Die 158 enthalten aber auch die Stunden. Du holst die Stunden mit div 60 erneut. Das sind 2. Diese 2*60 müssen also noch von den 158 heruntergerechnet werden. Was bleibt übrig? Richtig: Der Rest der Division ;-).
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure umrechnen;
var
  Stunden, Minuten, Sekunden, SekundenEin, Teiler: Integer;
begin
  SekundenEin := 9537;
  Teiler := 60;

  Minuten := SekundenEin DIV Teiler;
  Stunden := Minuten DIV Teiler;
  Sekunden := Minuten MOD Teiler;
  Minuten := Minuten mod Teiler;


  Form1.EditStunden.text:=FloatToStr (Stunden);
  Form1.EditMinuten.text:=FloatToStr (Minuten);
  Form1.EditSekunden.text:=FloatToStr (Sekunden);

end;
TobiHH Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

XP Pro und Vista Ultimate
Delphi 7
BeitragVerfasst: Mi 08.10.08 21:58 
Argggghh, so einfach.
Ich habs mit sämtlichen komischen Dingen probiert. Wollte da noch was mit Minuten1, Minuten2 reinsetzen :lol:


Tausend DANK. :!:
DANKE!!


Irgendwie sitzt da aber auch noch ein Fehler drin. Bei 29772 Sekunden sind in der Ausgabe 4 Sekunden weniger.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 22:29 
Der Fehler ist leicht zu erklären ;-):
ausblenden Delphi-Quelltext
1:
2:
Minuten := SekundenEin DIV Teiler;
Sekunden := Minuten MOD Teiler;
Naja, wie willst du aus den berechneten und auf ganze Zahlen gerundeten Minuten die Sekunden wieder herausholen? :shock:
Wie wäre es so?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  Stunden, Minuten, Sekunden, SekundenEin, Teiler: Integer;
begin
  SekundenEin := 29772;
  Teiler := 60;

  Sekunden := SekundenEin mod Teiler;
  Minuten := (SekundenEin div Teiler) mod Teiler;
  Stunden := (SekundenEin div Teiler) div Teiler;


  EditStunden.Text := IntToStr (Stunden);
  EditMinuten.Text := IntToStr (Minuten);
  EditSekunden.Text := IntToStr (Sekunden);
TobiHH Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

XP Pro und Vista Ultimate
Delphi 7
BeitragVerfasst: Mi 08.10.08 22:44 
Das funktioniert jetzt bestens. :D
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 22:54 
Du solltest dir einfach schrittweise anschauen was passiert und vorher überlegen was passieren soll. Und dann würdest du sowas auch selbst sehen.
Jerk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 251

Vista Ultimate, Ubuntu
Turbo Delphi 2006
BeitragVerfasst: Mi 08.10.08 23:11 
Jetzt mal vom Thema ab, gibt es keine Fertige Unit die sowas ordentlich kann ?
Interessiert mich und soll nicht als Lösung verwendet werden.