Sekunden-Umwandlung (Zeichenketten)
Schreiben Sie ein Programm, das eine Anzahl Sekunden in die Form "h:mm:ss" (h = Stunden, mm = Minuten und ss = Sekunden) bringt.
Zum Beispiel wird die Zahl 3674 in die Zeichenkette "1:01:14" umgewandelt.
Zusatzaufgabe: Schreiben Sie auch die Umkehrung.
0 Kommentare
7 Lösung(en)
import java.util.Scanner;
/**
* Form Sekunden in H:MM:SS um
* @author Philipp Gressly (phi@gressly.ch)
*/
public class Sekunden {
public static void main(String[] args) {
new Sekunden() . top();}
void top() {
long sekunden = einlesenSekunden();
String hms = umwandeln(sekunden);
System.out.println("Ausgabe: " + hms); }
String umwandeln(long sekunden) {
long h = sekunden / 3600; // Ganzzahldivision
// rest
sekunden = sekunden - h * 3600;
long m = sekunden / 60;
//rest
sekunden = sekunden - m * 60;
return h + ":" + zweistellig(m) + ":" + zweistellig(sekunden); }
String zweistellig(long zeitEinheit) {
if(zeitEinheit < 10)
return "0" + zeitEinheit;
return ""+zeitEinheit; // in String umwandeln
}
long einlesenSekunden() {
Scanner sc = new Scanner(System.in);
System.out.println("Bitte Sekunden eingeben: ");
return sc.nextLong();}
} // end of class Sekunden
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Sekunden-Umwandlung
https://www.programmieraufgaben.ch/aufgabe/sekunden-umwandlung/sxmwsks3
"""
# Programmieraufgabe:
# Schreiben Sie ein Programm, das eine Anzahl Sekunden in die Form
# "h:mm:ss" (h = Stunden, mm = Minuten und ss = Sekunden) bringt.
# Zum Beispiel wird die Zahl 3674 in die Zeichenkette "1:01:14" umgewandelt.
#
# Autor, Erstellung:
# Ulrich Berntien, 2018-08-06
#
# Sprache:
# Python 3.6.6
import re
def hms_to_seconds(hms: str) -> int:
"""
Konvertiert eine Angabe "h:mm:ss" in the Anzahl der Sekunden.
:param hms: Zeit im Format "stunde:minuten:sekunden"
:return: Zeit in Sekunden
"""
match = re.match(r"(\d+):(\d+):(\d+)$", hms)
if not match:
raise RuntimeError("invalid hms format: " + hms)
hours_part = int(match.group(1))
minutes_part = int(match.group(2))
seconds_part = int(match.group(3))
if minutes_part > 59 or seconds_part > 59:
raise RuntimeError("invalid hms format: " + hms)
return seconds_part + ((hours_part * 60) + minutes_part) * 60
def seconds_to_hms(seconds: int) -> str:
"""
Konvertiert Sekundenangabe in "h:mm:ss" Format.
:param seconds: Anzahl der Sekunden.
:return: Zeit in Stunden:Minuten:Sekunden Format.
"""
if seconds < 0:
sign = "-"
seconds = -seconds
else:
sign = ""
seconds_part = seconds % 60
minutes = seconds // 60
minutes_part = minutes % 60
hours = minutes // 60
return "%s%d:%02d:%02d" % (sign, hours, minutes_part, seconds_part)
# Tests der beiden Funktionen:
for seconds_test in (3674, 367400, -3674):
print("seconds =", seconds_test, "-> hms =", seconds_to_hms(seconds_test))
for hms_test in ("1:01:14", "0:00:10", "0:01:00", "1:00:00", "100:00:00"):
print("hms =", hms_test, "-> seconds =", hms_to_seconds(hms_test))
Lösung von: Ulrich Berntien ()
/**
* Programmieraufgabe: Sekunden-Umwandlung
* https://www.programmieraufgaben.ch/aufgabe/sekunden-umwandlung/sxmwsks3
*/
/**
* Konvertiert eine Angabe "h:mm:ss" in the Anzahl der Sekunden.
* @param hms Zeit im Format "stunde:minuten:sekunden"
* @return Zeit in Sekunden
*/
fun hms2seconds(hms: String): Int {
val pattern = Regex("""(\d+):(\d+):(\d+)""")
val match = pattern.matchEntire(hms)
?: throw IllegalArgumentException("invlid hms format")
val (hour, minute, second) = match.groups
.drop(1)
.map { it -> it!!.value.toInt() }
if (minute > 59 || second > 59)
throw IllegalArgumentException("invlid hms format")
return ((hour * 60) + minute) * 60 + second
}
/**
* Konvertiert Anzahl Sekunden in h:mm:ss Format.
* @param secondsArg Anzahl der Sekunden
* @return Die Sekunden umgerechnet ins Format "h:mm_ss".
*/
fun seconds2hms(secondsArg: Int): String {
val sign = if (secondsArg < 0) "-" else ""
val seconds = if (secondsArg < 0) -secondsArg else secondsArg
val secondsPart = seconds % 60
val minutes = seconds / 60
val minutesPart = minutes % 60
val hoursPart = minutes / 60
return "$sign$hoursPart:${"%02d".format(minutesPart)}:${"%02d".format(secondsPart)}"
}
/**
* Test der beiden Funktionen.
* @param argv wird ignoriert
*/
fun main(argv: Array<String>) {
for (seconds in intArrayOf(3674, 367400, -3674))
print("seconds = $seconds -> hms = ${seconds2hms(seconds)}\n")
for (hms in arrayOf("1:01:14", "0:00:10", "0:01:00", "1:00:00", "100:00:00"))
print("hms = $hms -> seconds = ${hms2seconds(hms)}\n")
}
Lösung von: Ulrich Berntien ()
package ch.santis.programmierenlernen.kapitel7;
public class Aufgabe_7_8 {
public static void main(String[] args) {
new Aufgabe_7_8().top();
}
// Sekunden-Umwandlung
void top() {
int sekundeneingabe = 3674;
int sekunden = sekundenwert(sekundeneingabe);
int minuten = minutenwert(sekundeneingabe);
int stunden = stundenwert(sekundeneingabe);
String stringausgabe = stringumwandlung(stunden, minuten, sekunden);
System.out.println("Stringausgabe: " + stringausgabe);
int sekundenausgabe = sekundenumwandlung(stringausgabe);
System.out.println("Sekundenausgabe: " + sekundenausgabe);
}
public int sekundenumwandlung(String formatiert) {
int stringlange = formatiert.length();
int stunden = Integer.parseInt(formatiert.substring(0,stringlange-6));
stunden = stunden * 3600;
int minuten = Integer.parseInt(formatiert.substring(stringlange-5,stringlange-3));
minuten = minuten * 60;
int sekunden = Integer.parseInt(formatiert.substring(stringlange-2,stringlange));
return stunden + minuten + sekunden;
}
public String stringumwandlung(int stunden, int minuten, int sekunden) {
String formatiert = "";
String stundenstring = "";
stundenstring = "" + stunden;
String minutenstring = "";
if(minuten < 10) { minutenstring = "0" + minuten; }
else { minutenstring = "" + minuten; }
String sekundenstring = "";
if(sekunden < 10) { sekundenstring = "0" + sekunden; }
else { sekundenstring = "" + sekunden; }
formatiert = stundenstring + ":" + minutenstring + ":" + sekundenstring;
return formatiert;
}
public int stundenwert(int sekundeneingabe) {
return (sekundeneingabe / 60) / 60;
}
public int minutenwert(int sekundeneingabe) {
return (sekundeneingabe / 60) % 60;
}
public int sekundenwert(int sekundeneingabe){
return sekundeneingabe % 60;
}
}
Lösung von: Jan Roth (Santis Training AG)
function convertSeconds(s) {
function leadZero(num) {
if (num < 10) return '0' + num;
return num;
}
let h = Math.floor(s / 3600); s = s % 3600;
let m = Math.floor(s / 60); s = s % 60;
return (h + ':' + leadZero(m) + ':' + leadZero(s));
}
function convertTimeFormat(str) {
str = str.split(':');
return parseInt(str[0]) * 3600 + parseInt(str[1]) * 60 + parseInt(str[2]);
}
console.log(convertSeconds(3674));
console.log(convertTimeFormat('1:01:14'));
console.log(convertTimeFormat(convertSeconds(3674)));
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// NET 6.x | C# 10.x | VS-2022
// Aufgabe 1.1 (Sekunden: int -> Uhrzeit: string)
string SecondsToTime(int s) => $"{s / 3600:#0}:{s % 3600 / 60:00}:{s % 3600 % 60:00}";
Console.WriteLine(SecondsToTime(3674));
// Aufgabe 1.2 (Sekunden: int -> Uhrzeit: string)
string SecondsToTime2(int s) => new DateTime(1, 1, 1, 0, 0, 0).AddSeconds(s).ToLongTimeString();
Console.WriteLine(SecondsToTime2(3674));
// Aufgabe 2.1 (Uhrzeit: string -> Sekunden: int)
int TimeAsStringToSeconds(string t) {
_ = TimeOnly.TryParse(t, out var time);
return time.Hour * 3600 + time.Minute * 60 + time.Second;
}
Console.WriteLine(TimeAsStringToSeconds("1:01:14"));
// Aufgabe 2.2 (Uhrzeit: time -> Sekunden: int)
int TimeToSeconds(TimeOnly t) => t.Hour * 3600 + t.Minute * 60 + t.Second;
Console.WriteLine(TimeToSeconds(new TimeOnly(1,1,14)));
Lösung von: Jens Kelm (@JKooP)
// C++ 14 | VS-2022
#include <tuple>
#include <sstream>
void seconds_to_time(int s) {
printf("%i:%02i:%02i\n", s / 3600, s % 3600 / 60, s % 3600 % 60);
}
void time_to_seconds(const std::string& t) {
std::string h, m, s;
std::stringstream ss{ t };
getline(ss, h, ':');
getline(ss, m, ':');
getline(ss, s, ':');
std::cout << stoi(h) * 3600 + stoi(m) * 60 + stoi(s) << std::endl;
}
int main() {
time_to_seconds("1:01:14");
seconds_to_time(3674);
}
Lösung von: Jens Kelm (@JKooP)
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 1 |
Schwierigkeit: | k.A. |
Webcode: | sxmw-sks3 |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |