Veröffentlicht 22. Oktober 201311 j 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]).
22. Oktober 201311 j Geht es da um eine bestimmte Programmiersprache? Und wo genau kommst du nicht weiter?
22. Oktober 201311 j Alle Operationen, die man dafür braucht sind Addition, Division und Modulo sowie ein einfacher Wertevergleich.
22. Oktober 201311 j Autor Wir programmieren in Ruby und mir fehlt irgendwie der Anfang. Bräuchte eine Starthilfe. Danke
23. Oktober 201311 j Dann fang doch mal mit dem Funktionskopf an. Überleg dir, welche Parameter die Funktion braucht.
23. Oktober 201311 j Autor 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
23. Oktober 201311 j 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.
23. Oktober 201311 j Autor Wie gesagt, komme ja an dieser Stelle einfach nicht weiter. Vielleicht könntest du mir einen Lösungsvorschlag anbieten:old
23. Oktober 201311 j 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?
23. Oktober 201311 j Autor Suche nur Hilfe. Wenn du nicht helfen willst, musst du auch nicht antworten.
23. Oktober 201311 j 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.
23. Oktober 201311 j 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.
12. November 201311 j Autor 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 Konto oder melde dich an, um einen Kommentar zu schreiben.