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]). Zitieren
Klotzkopp Geschrieben 22. Oktober 2013 Geschrieben 22. Oktober 2013 Geht es da um eine bestimmte Programmiersprache? Und wo genau kommst du nicht weiter? Zitieren
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. Zitieren
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 Zitieren
Klotzkopp Geschrieben 23. Oktober 2013 Geschrieben 23. Oktober 2013 Dann fang doch mal mit dem Funktionskopf an. Überleg dir, welche Parameter die Funktion braucht. Zitieren
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 Zitieren
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. Zitieren
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 Zitieren
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? Zitieren
BiMa13 Geschrieben 23. Oktober 2013 Autor Geschrieben 23. Oktober 2013 Suche nur Hilfe. Wenn du nicht helfen willst, musst du auch nicht antworten. Zitieren
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. Zitieren
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. Zitieren
Ulfmann Geschrieben 23. Oktober 2013 Geschrieben 23. Oktober 2013 Jaah Okay, da hast du Recht. Zitieren
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 Zitieren
Empfohlene Beiträge
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.