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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...