Zubringerbus (Anweisungen und Abfolgen)
(entnommen aus Bishop: Java Lernen, S.89)
Zwischen zwei Terminals eines Flughafens verkehrt ein Zubringerbus, der jeweils zur halben und zur vollen Stunde losfährt. Schreiben Sie ein Programm, das eine Uhrzeit in der Form hhmm (aber ohne führende Nullen) erhält und berechnet, wie lange es bis zur Abfahrt des nächsten Busses noch dauert. Dabei bezeichnet hh die aktuelle Stunde und mm die aktuelle Minute.
Eingabe: Minuten der aktuellen Uhzeit zeistellig. Beispiel: "07" = Sieben nach; "45": Viertel vor ...
Bei drei- oder vierstelliger Eingabe ("645" = 'viertel vor sieben'; 1025 = "fünf vor halb elf") werden die letzten beiden Ziffern als Minuten betrachtet.
Tipp: Berechnen Sie aus den Minuten der aktuellen Uhrzeit die zugehörige halbe Stunde.
2 Kommentare
16 Lösung(en)
class P1ShuttleBus {
public static void main(String[] args) {
int currentTime = 1420; // in der Form hhmm
int remainingTime, halfHours;
int restlicheMinuten;
restlicheMinuten = currentTime % 100;
if (0 <= restlicheMinuten && restlicheMinuten <=30){
halfHours = 1;
remainingTime =30- restlicheMinuten ;
}else{
halfHours = 2;
remainingTime= 60- restlicheMinuten;
}
System.out.println("Time remaining: " + remainingTime + " minutes.");
}
}
Lösung von: Rene keller (HS LU)
public class Zubringerbus {
public static void main(String[] args) {
String temp = new SimpleDateFormat("HHmm").format(new Date()); //Aktuelle Uhrzeit.
String current = (String.valueOf(temp).startsWith("0")) ? String.valueOf(temp).substring(1) : String.valueOf(temp); //Ohne führende Nullen.
int time = Integer.parseInt(current); //Kann man auch durch 920 ersetzen.
calc(time);
}
public static void calc(int time) {
int minutes = time % 100;
int remaining = (minutes > 30) ? 60 - minutes : 30 - minutes;
System.out.println("Abfahrt des nächsten Busses in " + remaining + " Minuten.");
}
}
Lösung von: Name nicht veröffentlicht
def bus(time):
return abs(30 - int(time[-2:]))
Lösung von: Bester Mensch (Class)
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BushalteStelle {
public static void main(String[] args) {
SimpleDateFormat sdf1 = new SimpleDateFormat("mm");
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Timestamp time1 = new Timestamp(System.currentTimeMillis());
String uhrzeit1 = sdf1.format(time1);
double restZeit = 0;
int warteZeit = 0;
restZeit = Double.parseDouble(uhrzeit1);
restZeit = (30 - (restZeit - ((Math.floor(restZeit / 30)) * 30)));
warteZeit = (int) restZeit;
System.out.println("Naechster Bus kommt in " + warteZeit + " Minuten");
Date aktuelleZeit1 = new Date();
Date naechsteAbfahrt = new Date(aktuelleZeit1.getTime() + (warteZeit * 60 * 1000));
String uhrzeit = sdf.format(naechsteAbfahrt);
System.out.println("Naechste Abfahrt um: " + uhrzeit + " Uhr");
}
}
Lösung von: Alex Mahlknecht (Privater Unterricht)
time = Time.new
timehour = time.hour
timemin = time.min
if timemin < 10
timemin = "0#{timemin}"
end
if timehour < 10
timehour = "0#{timehour}"
end
if timemin < 30
restZeit = 30 - timemin
ankuftszeit = "#{timehour}:30"
else
restZeit = 60 - timemin
timehour += 1
ankuftszeit = "#{timehour}:00"
end
puts "Nächster Bus kommt in #{restZeit} Minuten. (Um #{ankuftszeit} Uhr)"
Lösung von: Mogens Meißner (Ellentalgymnasien)
Module ZubringerBus
Sub Main()
While (True)
Console.WriteLine("Bitte Geben sie die Uhrzeit ein hh:mm")
Dim checkTime As String = Console.ReadLine()
Dim time As New DateTime
If IsDate(checkTime) Then : time = checkTime : End If
Dim timeLeft As Integer = 0
If time.Minute <= 30 Then
timeLeft = 30 - time.Minute
Else
timeLeft = 60 - time.Minute
End If
Console.WriteLine("Bus kommt in " & timeLeft & " Minuten!")
Console.ReadLine()
Console.Clear()
End While
End Sub
End Module
Lösung von: Elias Zech (Optics Balzers)
package Aufgaben.Zubringer;
public class ZubringerBus
{
private static String actualTime;
public static void main(String[] args)
{
// Aktuelle Zeit über Kommandozeilenargument mitgeben
actualTime = args[0];
System.out.println("Zeit: " + actualTime);
int remainingminutes =
Integer.parseInt(actualTime.substring(actualTime.length()-2, actualTime.length()));
remainingminutes = 30 - remainingminutes % 30;
System.out.println("Wartezeit: " + remainingminutes);
}
}
Lösung von: Name nicht veröffentlicht
def bus(time):
return 30 - (int(time[2:]) % 30)
print bus('1449') #example call
Lösung von: Name nicht veröffentlicht
package chapter02 ;
import static io.Input.*;
/**
* @version 0.1 (Jan 22, 2018)
* @author Philipp Gressly Freimann
* (philipp.gressly@santis.ch)
*/
public class Zubringerbus {
public static void main(String[] args) {
new Zubringerbus().top();
}
void top() {
int hhmm; // Eingabe user: Stunden Minuten
hhmm = inputInt("Geben Sie die aktuelle Zeit hhmm ein: ");
// Berechnug
int hh ; // Ganze Stunden
int mm ; // Minuten 00 .. 59 (ohne Stunden)
int halbstunden ; // 0 oder 1; 1 falls Minute >= 30
int minutenInHalberStunde; // 00 .. 29
int wartezeit ; // Zeit bis zur vollen nächsten Halbstunde
hh = hhmm / 100 ;
mm = hhmm - 100 * hh ;
halbstunden = mm / 30 ;
minutenInHalberStunde = mm - 30 * halbstunden ;
wartezeit = 30 - minutenInHalberStunde;
// Ausgabe
System.out.println("Wartezeit: " + wartezeit);
}
}
// end of class Zubringerbus
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
using System;
using System.Linq;
namespace Zubringerbus
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Gib die Zeit an, mein Sohn:");
string Text = Console.ReadLine();
int Uhrzeit = Int32.Parse(Text);
if (Text.Length >= 2) Uhrzeit = Int32.Parse(Text.Substring(Text.Length - 2, 2));
else if (Text.Length == 1) Uhrzeit = Int32.Parse(Text.Substring(Text.Length - 1, 1));
Console.WriteLine("Der nächste Transport kommt in " + (30 - (Uhrzeit % 30)) + "min");
Console.ReadLine();
}
}
}
Lösung von: Tobias Golz (Wilhelm Büchner Hochschule)
#!/usr/bin/python3.6
def exit_on_invalid_input():
print('Error! Please enter valid time in hhmm format!')
exit(1)
def validate_input(input_string):
if len(input_string) not in (3,4):
exit_on_invalid_input()
for char in input_string:
if ord(char) not in range(ord('0'), ord('9')+1):
exit_on_invalid_input()
def get_remaining_minutes(time_string):
result = 30 - int(time_string[-2:]) % 30
return 0 if result == 30 else result
print('please enter time in hhmm format:')
user_input = input()
validate_input(user_input)
remaining_minutes = get_remaining_minutes(user_input)
if remaining_minutes == 0:
print('the bus will arrive just now!')
else:
print(f"the bus will arrive in {remaining_minutes} minutes!")
Lösung von: Name nicht veröffentlicht
function getIdleMinutes(time) {
return 30 - parseInt(time.toString().slice(-2)) % 30;
}
console.log(getIdleMinutes(524));
console.log(getIdleMinutes(1038));
console.log(getIdleMinutes(1158));
console.log(getIdleMinutes(3));
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
class Zubringerbus {
private static int calculate(int time){
int ret = time%100;
return ret > 30 ? 60 - ret : 30 - ret;
}
}
Lösung von: Name nicht veröffentlicht
// NET 6.x | C# 10.x | VS-2022
// Variante 1 (Konvertierung in string und dann wieder in int)
int PeriodUntilDepartureString(int time) => 30 - int.Parse(time.ToString("0#")[^2..]) % 30;
// Variante 2 (lediglich durch Berechnung)
int PeriodUntilDepartureInt(int time) {
var c = 0;
var n = 0;
while(time > 0 && c < 2) {
n += time % 10 * (int)Math.Pow(10.0, c++);
time /= 10;
}
return 30 - n % 30;
}
// Aufruf der Varianten
var lstTimes = new List<int> { 524, 1038, 1158, 3, 0 };
lstTimes.ForEach(x => Console.WriteLine($"Variante 1: {x} -> {PeriodUntilDepartureString(x)}\tVariante 2: {x} -> {PeriodUntilDepartureInt(x)}"));
Lösung von: Jens Kelm (@JKooP)
// C++ 17 | VS-2022
#include <iostream>
#include <vector>
#include <sstream>
// Variante 1 (Konvertierung in string und dann wieder in int)
int period_until_departure_str(int time_) {
std::stringstream ss; ss << '0' << time_;
const auto s{ ss.str() };
return 30 - std::stoi(s.substr(s.length() - 2)) % 30;
}
// Variante 2 (lediglich durch Berechnung)
int period_until_departure_int(int time_) {
auto c{ 0 }, n{ 0 };
while (time_ && c < 2) {
n += time_ % 10 * (int)pow(10.0, c++);
time_ /= 10;
}
return 30 - n % 30;
}
int main() {
const std::vector<int>times{ 524, 1038, 1158, 3, 0 };
for(const auto& time_ : times)
std::cout << time_ << " -> " << period_until_departure_str(time_) << "\n";
}
Lösung von: Jens Kelm (@JKooP)
' VBA
Function PeriodUntilDeparture(ByVal time_ As Integer)
PeriodUntilDeparture = 30 - CInt(Right("0" & CStr(time_), 2)) Mod 30
End Function
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
524 →6
1038 → 22
1158 → 2
3 → 27
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Kommentare (2)
Zweitens steht der Begriff, im Wesentlichen gestützt auf die Theorien von Karl Marx, Friedrich Engels und Wladimir Iljitsch Lenin, für ökonomische und politische Lehren, mit dem Ziel, eine herrschaftsfreie und klassenlose Gesellschaft zu errichten.
Drittens werden damit Bewegungen und politische Parteien (vgl. Kommunistische Partei) bezeichnet, die das Ziel verfolgen, Gesellschaften zum Kommunismus zu überführen bzw. solche Lehren praktisch umzusetzen.
Viertens bezeichnet er – als von der ersten Bedeutung unterschiedene Fremdbezeichnung – daraus hervorgegangene Herrschaftssysteme. Das mächtigste dieser war die Sowjetunion, die mit ihren Verbündeten, den sogenannten Ostblockstaaten, zu Beginn des Kalten Krieges etwa ein Fünftel der Erdoberfläche beherrschte. In einigen dieser kommunistischen Parteidiktaturen (Realsozialismus) kam es zu Massenverbrechen (etwa dem Großen Terror in der stalinistischen Sowjetunion der 1930er Jahre oder in der maoistischen Kulturrevolution in der Volksrepublik China in den 1960er und 1970er Jahren). Die meisten realsozialistischen Staaten brachen um das Jahr 1990 zusammen.
Eine Abgrenzung zum Sozialismus ist nicht immer möglich.
Den Text "was bisher behandelt wurde" habe ich ersatzlos gestrichen. Haben "wir" doch bisher schon alle Kapitel behandelt; "ihr" nicht?