|
| Autor |
Nachricht |
Amaryllis1912 Newbie

Anmeldedatum: 25.03.2009 Beiträge: 2
|
Wert aus Funktion in eine Sub übernehmen
Verfasst am: 25.03.2009, 20:28 |
|
|
Hallo zusammen,
habe einen Code geschrieben, der zuerst die Standardzeit (siehe Sub Main()) 10:24:36 anzeigen soll (Das funktioniert auch). Anschließend soll er 50 Minuten und danach 135 Sekunden hinzu addieren. Dazu muss ich eine Enumeration deklarieren, die ich später der Einheiten wegen zum Rechnen benutze. Außerdem muss ich einen Konstruktor definieren, der die Werte für Stunde, Minute und Sekunde übergibt (Aufruf siehe Main), er kann auch Objekte meiner Klasse Zeit (mit den Membern m_std, m_min und m_sek) erstellen.
Ich habe eine Sub zuZeit vorgegeben, die die bereits gespeicherte Zeit in Sekunden umwandelt. Dann muss ich eine Methode Addieren (Sub Addieren(ByVal Anzahl as Short, ByVal Einheit as Zeiteinheit)) definieren, die zu der gespeicherten Zeit die 50 Minuten und später 135 Sekunden addiert. Anschließend soll über die MEthode Anzeigen die neu errechnete Zeit ausgeben werden.
Das Ganze wird eine Konsolenanwendung. Sie tut nichts, als die drei Zeit-Werte auszugeben.
Habe das Gerüst auch soweit hin gekriegt, bin mir aber nicht sicher, wie ich den Konstruktor richtig hin kriege und wie ich das, was ich in der Funktion zuSekunden ausrechne, in die Sub Addieren übernehme, sodass es über die Methode Anzeigen wieder ausgegeben wird.
Ich verzweifle ein wenig und bin leider auch noch ziemlich am Anfang.
Wäre toll, wenn mir jemand helfen könnte.
Mein Code hängt unten an.
Danke!
Viele Grüße
Amaryllis
Enum Zeiteinheit As Short 'ist das kleinstmöglich?
Stunde = 3600
Minute = 60
Sekunde = 1
End Enum
Class Zeit
Private m_std As Short
Private m_min As Short
Private m_sek As Short
'Konstruktor
Public Sub New(ByVal Stunde As Short, ByVal Minuten As Short, _
ByVal Sekunde As Short) 'Obekte der Klasse Zeit mit Zeitangaben erstellen
m_std = Stunde 'Werte für Stunde, Minute und Sekunde übergeben. Aufruf s. Main()
m_min = Minuten
m_sek = Sekunde
End Sub
'Funktion, die als Integer Anz. sek enthält,die bereits gespeichert sind
Private Function zuSekunden(ByVal Stunde As Short, ByVal Minuten As Short, _
ByVal Sekunde As Short) As Integer
zuSekunden = CInt(Stunde * Zeiteinheit.Stunde) + (Minuten * Zeiteinheit.Minute) + (Sekunde)
End Function
'Addieren der neuen Sekunden zu zuSekunden
Sub Addieren(ByVal Anzahl As Short, ByVal Einheit As Zeiteinheit)
If Einheit = Zeiteinheit.Minute Then
m_min = Anzahl * Zeiteinheit.Minute + zuSekunden(0, 50, 0)
WriteLine("Minute {0},{1},{2}", m_std, m_min, m_sek)
If Einheit = Zeiteinheit.Sekunde Then
m_sek = Anzahl * Zeiteinheit.Sekunde + zuSekunden(0, 0, 135)
WriteLine("Sekunde {0},{1},{2}", m_std, m_min, m_sek)
If Einheit = Zeiteinheit.Stunde Then
m_std = Anzahl * Zeiteinheit.Stunde
WriteLine("Stunde {0},{1},{2}", m_std, m_min, m_sek)
End If
End If
End If
End Sub
'abgebildete Sub:
'neu errechnete Zeit in Std:Min:Sek umwandeln
Private Sub zuZeit(ByVal Sekunden As Integer) 'Integer ' überall private?
m_sek = Sekunden Mod 60 'Rest, wenn ich Zahl durch 60 teile
m_min = (Sekunden \ 60) Mod 60 'sek ganzzahlig durch 60 und davon der Rest, wenn durch 60
m_std = Sekunden \ 60 * 60 'sek ganzzahlig durch 60, mal 60
End Sub
'Anzeigen, was zuZeit ausgerechnet hat
Sub Anzeigen()
WriteLine("Zeit: {0}:{1}:{2}", m_std, m_min, m_sek)
End Sub
End Class
Module abc
Sub Main()
Dim z As New Zeit(10, 24, 36)
z.Anzeigen()
'WriteLine("Erster Test bestanden: Voreinstellung: 10:24:36")
z.Addieren(50, Zeiteinheit.Minute)
z.Anzeigen()
'WriteLine("Zweiter Test bestanden: 50 Minuten addiert 11:14:36")
z.Addieren(135, Zeiteinheit.Sekunde)
z.Anzeigen()
'WriteLine("Dritter Test bestanden: 135 Sekunden addiert: 11:16:51")
ReadLine()
End Sub
End Module |
|
| |
|
 |
|
|