Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

habe eine Aufgabe in der Uni bekommen und komme nicht weiter.

Vielleicht kann mir einer helfen. Danke!

Uhrenarithmetik

Schreiben Sie eine Funktion mit der man eine übliche Digitaluhranzeige (Stunden, Minuten, Sekunde) um einen Zeitbetrag (Stunden, Minuten, Sekunden) vorstellen kann.

Die Uhranzeige soll 24 Stunden haben.

Das Resultat soll ein

Array

der Größe 3 sein ([hour,min,sec] z.B.

[12,30,10]).

Geschrieben

def_class(:Clock24,[:hour24,:min,:sec]) {

def invariant? ()

self.hour24.hour24? and self.min.min? and self.sec.sec?

end

}

def_class(:ClockSec,[:day_sec]) {

def invariant?() self.day_sec.day_sec? end

}

Bin jetzt soweit, scheint aber nicht ganz richtig zu sein...:upps

Geschrieben
Wie gesagt, komme ja an dieser Stelle einfach nicht weiter.
Es sieht mir mehr danach aus, als hättest du das irgendwo abgeschrieben und keinen blassen Schimmer, was das tut.

Vielleicht könntest du mir einen Lösungsvorschlag anbieten:old
Suchst du einfach nur jemanden, der deine Hausaufgaben macht?
Geschrieben

Mach mal einen Schritt nach dem anderen, bevor du versuchst so einen Stunt hinzulegen.

Wir bilden eine Zeit erstmal genau so ab, wie der vorgegebene Parameter: ein Array aus Stunde, Minute und Sekunde. Dann brauchen wir eine Methode, die diesen Wert entsprechend verändert. Würde in etwa so aussehen:


current_time = [12, 15, 0]

def add_time(time_array)

  hours = time_array[0]

  minutes = time_array[1]

  seconds = time_array[2]


  # add this to your time

end

Wenn das funktioniert, behandle die Fälle, wenn Minuten und Sekunden den Wert 60 überschreiten (bzw. Stunden 24). Wenn das dann auch funktioniert, fängt man mit Refactoring an und baut eleganten Code, gern auch objektorientiert.

Das was du da oben versuchst, ist a) syntaktisch völliger Unsinn, B) unvollständig und c) ein Doppel-Salto-Versuch, wo du einfach nur einen Schritt gehen solltest.

Geschrieben
Wenn das funktioniert, behandle die Fälle, wenn Minuten und Sekunden den Wert 60 überschreiten (bzw. Stunden 24).

Hast du schon mal eine Digitaluhr gesehen, auf der 24:60:60 zu lesen war? Es wird bei Erreichen von 60 bzw. 24 (oder beim Überschreiten von 59/23) umgestellt. ;)

  • 3 Wochen später...
Geschrieben

Hallo zusammen,

bin fertig geworden und es funktioniert. Vielen Dank für Eure Hilfe!

MINS = 60

SEC = 60

def clock(modus, hour_a, min_a, sec_a, hour, min, sec)

check_pre((

hour_a.nat? and min_a.nat? and sec_a.nat? and hour.nat? and min.nat? and sec.nat? and

modus.nat? and (modus == 24 or modus == 12) and

(hour_a >= 0) and (min_a >= 0) and (sec_a >= 0) and (hour >= 0) and (min >= 0) and (sec >= 0) and

(hour_a < modus) and (min_a < 60) and (sec_a < 60) and (hour < modus) and (min < 60) and (sec < 60)))

#Zeit in Sekunden umwandeln

time_in_sec_a = time_to_sec(hour_a, min_a, sec_a)

time_in_sec = time_to_sec(hour, min, sec)

#Zeiten mit einander Addieren

time_in_sec_sum = time_in_sec_a + time_in_sec

#Array berechnen

[new_time_hour(time_all(modus, time_in_sec_sum)),

new_time_min(time_all(modus, time_in_sec_sum)),

new_time_sec(time_all(modus, time_in_sec_sum))]

end

#Methode zum Zeit in Sekunden wandeln

def time_to_sec(hour, min, sec)

(((hour * MINS ) + min ) * SEC) + sec

end

#Maximale sekunden anzahl

def time_all(modus, sec_all)

sec_all % (modus * MINS * SEC)

end

#Neue Anzahl von Stunden

def new_time_hour(sec_all)

sec_all / (MINS * SEC)

end

#Neue Anzahl von Minuten

def new_time_min(sec_all)

(sec_all % (MINS * SEC)) / SEC

end

#Neue Anzahl von Sekunden

def new_time_sec(sec_all)

(sec_all % (MINS * SEC)) % SEC

end

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...