BiMa13 Geschrieben 22. Oktober 2013 Geschrieben 22. Oktober 2013 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]).
Klotzkopp Geschrieben 22. Oktober 2013 Geschrieben 22. Oktober 2013 Geht es da um eine bestimmte Programmiersprache? Und wo genau kommst du nicht weiter?
Der Hans Geschrieben 22. Oktober 2013 Geschrieben 22. Oktober 2013 Alle Operationen, die man dafür braucht sind Addition, Division und Modulo sowie ein einfacher Wertevergleich.
BiMa13 Geschrieben 22. Oktober 2013 Autor Geschrieben 22. Oktober 2013 Wir programmieren in Ruby und mir fehlt irgendwie der Anfang. Bräuchte eine Starthilfe. Danke
Klotzkopp Geschrieben 23. Oktober 2013 Geschrieben 23. Oktober 2013 Dann fang doch mal mit dem Funktionskopf an. Überleg dir, welche Parameter die Funktion braucht.
BiMa13 Geschrieben 23. Oktober 2013 Autor Geschrieben 23. Oktober 2013 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
Klotzkopp Geschrieben 23. Oktober 2013 Geschrieben 23. Oktober 2013 Bin jetzt soweit, scheint aber nicht ganz richtig zu sein...:uppsDann erklär doch mal, was du dir dabei gedacht hast. Vielleicht kommen wir darauf, wo es hakt.
BiMa13 Geschrieben 23. Oktober 2013 Autor Geschrieben 23. Oktober 2013 Wie gesagt, komme ja an dieser Stelle einfach nicht weiter. Vielleicht könntest du mir einen Lösungsvorschlag anbieten:old
Klotzkopp Geschrieben 23. Oktober 2013 Geschrieben 23. Oktober 2013 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?
BiMa13 Geschrieben 23. Oktober 2013 Autor Geschrieben 23. Oktober 2013 Suche nur Hilfe. Wenn du nicht helfen willst, musst du auch nicht antworten.
Ulfmann Geschrieben 23. Oktober 2013 Geschrieben 23. Oktober 2013 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, unvollständig und c) ein Doppel-Salto-Versuch, wo du einfach nur einen Schritt gehen solltest.
Der Hans Geschrieben 23. Oktober 2013 Geschrieben 23. Oktober 2013 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.
BiMa13 Geschrieben 12. November 2013 Autor Geschrieben 12. November 2013 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
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden