Stunden, Minuten, Sekunden (Anweisungen und Abfolgen)
Schreiben Sie ein Programm, das eine Größe, die in Stunden, Minuten und Sekunden angegeben ist, ins metrische System (Zehnersystem) mit der Maßeinheit "Stunden" umrechnet.
Beispiel: 1 h 15' wird in 1.25 h verwandelt.
Zusatzaufgabe: Schreiben Sie auch die Umkehrung. Beispielsweise soll 1.23 h in 1 h 13' 48" verwandelt werden.
Tipp: 1 Minute = 1/60 h und 1 Sekunde = 1/3600 h (= ca. 0.000277777 h)
und für die Umkehrung:
0.01 h = 36 Sekunden
9 Kommentare
8 Lösung(en)
import java.util.Scanner;
/**
* Verwandlen "Stunden:Minuten:Sekunden" ins metrische System.
* @author Philipp Gressly (phi AT gressly DOT ch)
*/
public class StundenMinutenSekunden {
public static void main(String[] args) {
new StundenMinutenSekunden().top();
}
void top() {
int stunden = einlesen("Stunden" );
int minuten = einlesen("Minuten" );
int sekunden = einlesen("Sekunden");
double metrisch = umrechnen(stunden, minuten, sekunden);
System.out.println("Metrisch: " + metrisch);
}
double umrechnen(int stunden, int minuten, int sekunden) {
double metrisch = stunden;
metrisch = metrisch + minuten / 60.0;
metrisch = metrisch + sekunden / 3600.0;
return metrisch;
}
Scanner sc = new Scanner(System.in);
int einlesen(String groesse) {
System.out.println("Geben Sie " + groesse + " ein: ");
return sc.nextInt();
}
} // end of class StundenMinutenSekunden
import java.util.Scanner;
/**
* Zusatzaufgabe:
* Verwandlen metrisches System in "Stunden:Minuten:Sekunden".
* @author Philipp Gressly (phi AT gressly DOT ch)
*/
public class StundenMinutenSekundenUmkehrung {
public static void main(String[] args) {
new StundenMinutenSekundenUmkehrung().top();
}
void top() {
double metrisch = einlesen("Stunden (metrisch z. B. 3.51)" );
int stundenanteil = berechneStundenanteil (metrisch);
int minutenanteil = berechneMinutenanteil (metrisch);
double sekundenanteil = berechneSekundenanteil(metrisch);
System.out.println(stundenanteil + "h " +
minutenanteil + "' " +
sekundenanteil + "\"");
}
int berechneStundenanteil(double metrisch) {
return (int) metrisch;
}
/**
* Minuten (abzüglich ganzer Stunden und abzüglich Sekunden)
*/
int berechneMinutenanteil(double metrisch) {
int ganzeSekundenOhneStunden = berechneSekundenInnerhalbDerStunden(metrisch);
return ganzeSekundenOhneStunden / 60;
}
/**
* Anzahl ganzer Sekunden innerhalb der Stunde.
* Diese Zahl beinhaltet auch die Minuten.
* z. B. berechneSekundenInnerhalbDerStunden(17.5) = 1800;
*/
int berechneSekundenInnerhalbDerStunden(double metrisch) {
metrisch = metrisch - berechneStundenanteil(metrisch);
return (int) (metrisch * 60 * 60);
}
double berechneSekundenanteil(double metrisch) {
metrisch = metrisch - berechneStundenanteil(metrisch);
metrisch = metrisch * 60 - berechneMinutenanteil(metrisch) ;
metrisch = metrisch * 60;
metrisch = wennNoetigAufrunden(metrisch);
return metrisch;
}
// Ganze Sekundenzahlen als solche darstellen, auch wenn
// Rundungsfehler auf den hintersten Stellen auftreten.
double wennNoetigAufrunden(double zahl) {
if(Math.abs(zahl - Math.round(zahl)) < 0.0000000001 ) {
return Math.round(zahl);
}
return zahl;
}
Scanner sc = new Scanner(System.in);
double einlesen(String groesse) {
System.out.println("Geben Sie " + groesse + " ein: ");
return sc.nextDouble();
}
} // end of class StundenMinutenSekunden
def umrechnen(stunden,minuten,sekunden):
m=0.0
m+=stunden
m+=minuten/60.0
m+=sekunden/3600.0
return m
s = int(input('Stunden: '))
m = int(input('Minuten: '))
sek = int(input('Sekunden: '))
print umrechnen(s,m,sek);
program Zeit (input, output);
{ wandelt eine Uhrzeit ins metrische System um }
var
h : real;
m : real;
s : real;
begin
{ Eingabe }
writeln('Geben Sie die Stunden ein: ');
readln(h);
writeln('Geben Sie die Minuten ein: ');
readln(m);
writeln('Geben Sie die Sekunden ein: ');
readln(s);
writeln('Die Uhrzeit ist: ', h:2:0, 'h ', m:2:0, 'm ', s:2:0, 's ');
s := s/60;
if s > 0.5 then
m := m+1;
m := m/60;
m := (m - Trunc(m)) * 100;
writeln('Die Uhrzeit ist: ' , h:2:0, '.', m:0:0)
end. { Zeit }
Lösung von: Katja Rummler ()
function timeToDec(hours, mins, secs) {
mins = mins || 0;
secs = secs || 0;
return hours + (mins / 60) + (secs / 3600);
}
// viel komplizierter als ich dachte!
// besonders die stunden- und sekundenstellen
// brauchen eine menge feintuning.
function decToTime(dec) {
let h, m, s;
s = dec * 3600;
if (s >= 3600) {
h = Math.floor(s / 3600);
s %= h * 3600;
} else h = 0;
m = Math.floor(s / 60);
s = Math.floor(s %= m * 60);
return [h || 0, m || 0, s || 0];
}
// ausgabe
console.log( timeToDec(1, 15) );
console.log( decToTime(1.23) );
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
# stunden_minuten_sekunden.py
#Eingabe h, min, sec
print("Bitte h eingeben")
h = float(input())
print("Bitte min eingeben")
min = float(input())
print("Bitte sec eingeben")
sec = float(input())
#Berechnung
x1 = h
x2 = 60 * (1/3600) * min
x3 = (1/3600) * sec
#Ausgabe
print(h,"Stunde",min,"Minute",sec,"Sekunde", "ergibt", x1+x2+x3,"h")
Lösung von: Name nicht veröffentlicht
// NET 6.x | C# 10.x | VS-2022
// Aufgabe 1
// Variante 1.1
double TimeToHour(int h, int m, int s) => Math.Round(h + m / 60.0 + s / 3600.0, 2);
Console.WriteLine(TimeToHour(1, 13, 48));
// Variante 1.2
double TimeToHour2(TimeOnly t) => (t - new TimeOnly(0,0,0)).TotalHours;
Console.WriteLine(TimeToHour2(new TimeOnly(1, 13, 48)));
// Aufgabe 2
// Variante 2.1
string HourToTime(double n) {
int s = (int)(n * 3600);
return $"{s / 3600:#0}:{s % 3600 / 60:00}:{s % 3600 % 60:00}";
}
Console.WriteLine(HourToTime(1.23));
// Variante 2.2
string HourToTime2(double n) => new DateTime(1, 1, 1, 0, 0, 0).AddHours(n).ToLongTimeString();
Console.WriteLine(HourToTime2(1.23));
Lösung von: Jens Kelm (@JKooP)
// C++ 20 | VS-2022
#include <iostream>
#include <sstream>
#include <tuple>
namespace TIME {
using uint = unsigned int;
class time2dbl {
uint sec_{ 0 }, min_{ 0 }, hrs_{ 0 };
public:
time2dbl() = default;
time2dbl(uint seconds) : sec_{ seconds } {}
time2dbl(uint minutes, uint seconds) : min_{ minutes }, sec_{ seconds } {}
time2dbl(uint hours, uint minutes, uint seconds) : hrs_{ hours }, min_{ minutes }, sec_{ seconds } {}
inline const auto set_hour(uint val) { hrs_ = val; };
inline const auto set_minute(uint val) { min_ = val; };
inline const auto set_second(uint val) { sec_ = val; };
inline const auto get() { return hrs_ + min_ / 60.0 + sec_ / 3600.0; }
friend std::ostream& operator<<(std::ostream& os, time2dbl t) noexcept {
os << t.get();
return os;
}
};
class dbl2time {
double hrs_{ 0 };
public:
dbl2time() = default;
dbl2time(double hour) : hrs_{ hour } {}
inline const auto set_hour(uint val) { hrs_ = val; };
inline const auto get() {
const auto sec{ uint(hrs_ * 3'600) };
return std::make_tuple(sec / 3'600, sec % 3'600 / 60, sec % 3'600 % 60);
}
friend std::ostream& operator<<(std::ostream& os, dbl2time t) noexcept {
const auto [h, m, s] { t.get() };
os << h << ":" << m << ":" << s;
return os;
}
};
}
using namespace TIME;
int main() {
// Aufgabe 1:
time2dbl time_1{ 1, 13, 48 }; // hh:mm:ss
std::cout << time_1 << "\n"; // 1.23
// oder:
std::cout << time_1.get() << "\n"; // 1.23
time2dbl time_2{ 1, 30 }; // mm:ss
std::cout << time_2 << "\n"; // 0.025
time2dbl time_3{ 3600 }; // s
std::cout << time_3 << "\n"; // 1.0
time_3.set_second(7200); // ändern mittels Methode
std::cout << time_3 << "\n"; // 2.0
time2dbl time_4; // mm
time_4.set_minute(60); // setzen mittels Methode
std::cout << time_4 << "\n"; // 1.0
// Zusatzaufgabe:
dbl2time time_5{ 1.23 };
std::cout << time_5 << "\n"; // 1:13:48
// oder:
const auto [h, m, s] { time_5.get() };
std::cout << h << ":" << m << ":" << s; // 1:13:48
}
Lösung von: Jens Kelm (@JKooP)
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 1 |
Schwierigkeit: | k.A. |
Webcode: | deeb-acqv |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |
Kommentare (9)