Uhrzeit in Textform (Felder)
Schreiben Sie ein Programm, das eine gegeben Uhrzeit im Format "hh:mm" als Text ausgibt. Dabei bedeuten "hh" die Stunden von 00 bis 24 Uhr und "mm" die Minuten von 00 bis maximal 59.
Einfache Beispiele:
"06:08" -> "Es ist acht Minuten nach sechs Uhr."
Kompliziertere Beispiele:
"11:39" -> "Es ist neun Minuten nach halb zwölf Uhr."
"15:45" -> "Es ist viertel vor vier Uhr."
Ob Sie "dreiviertel Sieben" oder "viertel vor Acht" schreiben, spielt keine Rolle. Mit anderen Worten: Sie brauchen in ihrem Programm keine lokalen Unterschiede zu berücksichtigen.
Optional: Schreiben Sie bei Zeiten vor 06:00 Uhr bzw. nach 18:00 Uhr jeweils hin, ob es sich um "morgens" oder "abends" handelt. Schreiben Sie Mittag, statt "Punkt zwölf Uhr".
0 Kommentare
8 Lösung(en)
package ch.programmieraufgaben.selektion;
import java.util.Scanner;
/**
* Gib die Uhrzeit als Text aus. Format: hh:mm Möglich: 00:00 - 23:59:
* alternativ bis "24:00" Ausgabe: "Es ist " [mmm (vor | nach)] (hhh Uhr |
* Mitternacht | Mittag) [morgens | abends]." Dabei wird morgens nur bis 06:00
* angegeben und abends nur ab 18:00 Uhr.
*
* Beispiele: "04:22" "Es ist acht vor halb vier Uhr morgens." "09:35"
* "Es ist fünf nach halb zehn Uhr." "4rxx"
* "Format hh:mm wird vierstellig erwartet." "12:00" "Es ist Mittag." "23:59"
* "Es ist eine Minute vor Mitternacht." "08:14"
* "Es ist vierzehn Minuten nach acht Uhr." "20:14"
* "Es ist vierzehn Minuten nach acht Uhr abends." "24:34"
* "Maximum 23:59 oder 24:00." "8:33" "Format hh:mm wird virestellig erwartet.
* "22:00" "Es ist Punkt zehn Uhr abends."
*
*
* @author Philipp Gressly (phi AT gressly DOT ch)
*/
public class UhrzeitInWorten {
public static void main(String[] args) {
new UhrzeitInWorten().top();
}
void top() {
String eingabe = einlesenString("Bitte Uhrzeit im Format 'hh:mm' eingeben: ");
if (formatOK(eingabe)) {
int hh = stunden(eingabe);
int mm = minuten(eingabe);
if (24 == hh && mm == 00) {
System.out.println("Es ist Punkt Mitternacht.");
return;
}
if (0 <= hh && hh <= 24 && 0 <= mm && mm <= 59) {
if (24 > hh || 0 < mm) {
System.out.println(alsUhrzeit(hh, mm) + ".");
return;
}
}
System.out.println("Maxium 23:59 oder 24:00");
return;
}
System.out.println("Format hh:mm wird vierstellig erwartet.");
}
Scanner sc = new Scanner(System.in);
String einlesenString(String frage) {
System.out.println(frage);
return sc.next();
}
boolean formatOK(String eingabe) {
if (!istZiffer(eingabe.charAt(0)))
return false;
if (!istZiffer(eingabe.charAt(1)))
return false;
if (!(':' == eingabe.charAt(2)))
return false;
if (!istZiffer(eingabe.charAt(3)))
return false;
if (!istZiffer(eingabe.charAt(4)))
return false;
return true;
}
boolean istZiffer(char ch) {
return '0' <= ch && ch <= '9';
}
int stunden(String eingabe) {
return 10 * ziffer(eingabe, 0) + ziffer(eingabe, 1);
}
int minuten(String eingabe) {
return 10 * ziffer(eingabe, 3) + ziffer(eingabe, 4);
}
int ziffer(String eingabe, int pos) {
char c = eingabe.charAt(pos);
return c - '0';
}
String[] zahlenMinuten = { "Null", "eine", "zwei", "drei", "vier", "fünf",
"sechs", "sieben", "acht", "neun", "zehn", "elf", "zwölf",
"dreizehn", "vierzehn", "FUENFZEHN", "sechzehn", "siebzehn",
"achzehn", "neunzehn", "zwanzig" };
String[] zahlenStunden = { "Mitternacht", "ein", "zwei", "drei", "vier",
"fünf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwölf" };
String alsUhrzeit(int hh, int mm) {
String uhrzeitAlsString = "Es ist " + minutenAngabeAlsUhrzeit(mm) + " "
+ stundenAngabeAlsUhrzeit(hh, mm);
if (0 < hh && hh < 6 || (6 == hh && mm == 0) || (0 == hh && mm > 20)) {
uhrzeitAlsString = uhrzeitAlsString + " morgens";
}
if (hh >= 18 && (hh < 23 || mm <= 20)) {
uhrzeitAlsString = uhrzeitAlsString + " abends";
}
return uhrzeitAlsString;
}
String minutenAngabeAlsUhrzeit(int mm) {
if (0 == mm) {
return "Punkt";
}
if (30 == mm) {
return "halb";
}
if (15 == mm) {
return "viertel nach";
}
if (45 == mm) {
return "viertel vor";
}
if (20 < mm && mm < 30) {
return txtInklMinuten(30 - mm) + " vor halb";
}
if (30 < mm && mm < 40) {
return txtInklMinuten(mm - 30) + " nach halb";
}
if (mm < 30) {
return txtInklMinuten(mm) + " nach";
}
if (mm > 30) {
return txtInklMinuten(60 - mm) + " vor";
}
return "MINUTENANGABE " + mm + " UNBEKANNT.";
}
String txtInklMinuten(int mm) {
if (1 == mm) {
return "eine Minute";
} else
return zahlenMinuten[mm] + " Minuten";
}
String stundenAngabeAlsUhrzeit(int hh, int mm) {
if (mm > 20) {
hh = hh + 1;
if (24 == hh) {
hh = 0;
}
}
if (0 == hh)
return "Mitternacht";
if (12 == hh && mm == 0)
return "Mittag";
if (hh > 12) {
hh = hh - 12;
}
return "" + zahlenStunden[hh] + " Uhr";
}
} // end of class UhrzeitInWorten
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
hh = 25
mm = 61
count = ""
mtext = ""
while hh >= 25 or hh < 0:
hh = int(input("Welche Stunde ist es? "))
while mm >= 61 or mm < 0:
mm = int(input("Welche Minute ist es? "))
if hh > 12:
time = "Abends"
else:
time = "Morgens"
if hh > 12 and hh < 25 and hh != 24:
hh -= 12
hh_names = ["Mitternacht","Eins","Zwei","Drei","Vier","Fuenf","Sechs","Sieben","Acht","Neun","Zehn","Elf","Zwoelf"]
mm_names = ["Null","Eine","Zwei","Drei","Vier","Fuenf","Sechs","Sieben", "acht", "neun", "zehn", "elf", "zwoelf", "dreizehn", "vierzehn", "FUENFZEHN", "sechzehn", "siebzehn","achtzehn", "neunzehn", "zwanzig"]
if mm == 1 or mm == 59:
minute = " Minute"
else:
minute = " Minuten"
if mm == 0:
count = "Punkt"
elif mm == 30:
count = "halb"
if hh != 0:
hh += 1
else:
hh = 12
elif mm == 15:
count = "viertel nach"
elif mm == 45:
count = "viertel vor"
hh += 1
elif mm > 20 and mm < 30:
mtext = mm_names[30 - mm]+minute+" vor halb"
hh += 1
elif mm > 30 and mm < 40:
mtext = mm_names[mm - 30]+minute+" nach halb"
hh += 1
elif mm < 30 and mm != 15:
count = mm_names[mm]+minute + " nach "
elif mm > 30 and mm != 45:
count = mm_names[60-mm] +minute+ " vor "
hh += 1
print(mtext + count + " "+ hh_names[hh]+ " ("+time+")")
Lösung von: Name nicht veröffentlicht
<!-- Dieser Code wurde für ColdFusion geschrieben. Da diese Sprache aber leider noch nicht zur Verfügung steht, habe ich meine Lösung hier zugeordnet.-->
<form method="post" action="unterordner/index.cfm" target="frame">
<b><p>Bitte geben Sie eine Uhrzeit ein, welche Sie als Text ausgeben möchten:</p></b>
Bitte geben Sie Ihre Uhrzeit in einer vierstelligen Form ein (z.B. 03:22 oder 12:11).<p></p>
<b>Eingabe:</b> <input type="text" name="time"><br>
<p></p>
<input type="submit" name="button" value="Absenden">
</form>
<cfparam name="time" default="">
<cfoutput>
<!--Minuten-->
<cfset minuten_array = ['null','ein', 'zwei', 'drei', 'vier', 'fünf',
'sechs','sieben','acht','neun','zehn','elf','zwölf','dreizehn',
'vierzehn','fünfzehn','sechszehn','siebzehn','achtzehn','neunzehn','zwanzig','einundzwanzig',
'zweiundzwanzig','dreiundzwanzig','vierundzwanzig',
'fünfundzwanzig','sechsundzwanzig','siebenundzwanzig','achtundzwanzig','neunundzwanzig']>
<!--Stunden-->
<cfset stunden_array = ['null','ein', 'zwei', 'drei', 'vier', 'fünf',
'sechs','sieben','acht','neun','zehn','elf','zwölf','dreizehn','vierzehn','fünfzehn',
'sechszehn','siebzehn','achtzehn',
'neunzehn','zwanzig','einundzwanzig','zweiundzwanzig','dreiundzwanzig','vierundzwanzig']>
<cfif IsNumeric(gettoken(time, 1, ":")) AND IsNumeric(gettoken(time, 2, ":"))>
<cfif Len(time) IS 5>
<cfif gettoken(time, 1, ":") LTE 24 OR gettoken(time, 2, ":") LTE 60>
<!--Stunden--->
<cfloop from="00" to="24" index="i">
<cfif gettoken(time, 1, ":") IS i>
<cfset i = i+1>
<cfif gettoken(time, 1, ":") GTE 00 AND gettoken(time, 1, ":") LTE 12>
<cfset m_a ="morgens">
<cfelse>
<cfset m_a="abends">
</cfif>
<cfbreak>
</cfif>
</cfloop>
<!--Minuten-->
<cfloop from="00" to="60" index="y">
<cfif gettoken(time, 2, ":") IS y>
<cfset y = y+1>
<cfif gettoken(time, 2, ":") GT 00 AND gettoken(time, 2, ":") LTE 29>
<cfset minuten = minuten_array[y] & ' Minuten nach'>
</cfif>
<cfif gettoken(time, 2, ":") IS 15>
<cfset minuten = 'viertel nach'>
</cfif>
<cfif gettoken(time, 2, ":") IS 30>
<cfset minuten = 'halb'>
</cfif>
<cfif gettoken(time, 2, ":") GT 30 AND gettoken(time, 2, ":") LTE 59>
<cfset y = y - 30>
<cfset minuten = minuten_array[y] & ' Minuten nach halb'>
</cfif>
<cfif gettoken(time, 2, ":") IS 45>
<cfset minuten = 'viertel vor'>
</cfif>
<cfif gettoken(time, 2, ":") IS 00>
<cfset minuten = 'Punkt'>
</cfif>
<cfbreak>
</cfif>
</cfloop>
<cfset Ausgabe = minuten & ' ' & stunden_array[i] & ' Uhr ' & #m_a#>
<cfif time IS "00:00">
Es ist Mitternacht.
<cfelseif time IS "12:00">
Es ist Mittag.
<cfelse>
Es ist #Ausgabe#.
</cfif>
<cfelse>
Falsche Eingabe! Bitte geben Sie Ihre Uhrzeit nach dem oben gannanten Beispiel ein.
</cfif>
</cfif>
<cfelse>
Falsche Eingabe! Bitte versuchen Sie es erneuert!
</cfif>
</cfoutput>
Lösung von: Daniela Hi. ()
var time = window.prompt("Uhrzeit (im Format hh:mm):"),
hrs = parseInt(time.split(":")[0]),
min = parseInt(time.split(":")[1]),
out = "Es ist ",
numbers = [
"eins", "zwei", "drei", "vier", "fünf", "sechs",
"sieben", "acht", "neun", "zehn", "elf", "zwölf",
"dreizehn", "vierzehn", "Viertel", "sechzehn", // N.B: Viertel statt 15
"siebzehn", "achtzehn", "neunzehn", "zwanzig"
],
inc = 0, // stundeninkrement bei "vor/halb"-ausdrücken
am = true; // am/pm
// fallselektion minuten
if (min == 0) out += "Punkt ";
else if (min <= 20) out += numbers[min-1] + " nach ";
else if (min > 20 && min < 30) {
out = numbers[29-min] + " vor halb ";
inc++;
} else if (min == 30) {
out += "halb ";
inc++;
}
else if (min > 30 && min < 40) {
out += numbers[min-31] + " nach halb ";
inc++;
}
else if (min >= 40 && min <= 59) {
out += numbers[59-min] + " vor ";
inc++;
}
/* kompliziertere ausgabe */
// numbers anpassen
numbers[0] = "ein"; // nicht "einS" uhr
numbers.unshift("zwölf"); // für 23:21-01:20 uhr
// stundenausgabe
if (hrs > 12) {
hrs -= 12;
am = false;
}
out += numbers[hrs+inc] + " Uhr";
/* optionaler teil */
if (am && hrs < 6) out += " morgens";
if (!am && hrs >= 6) out += " abends";
if (hrs == 0 && min == 0) out = "Es ist Mitternacht";
if (hrs == 12 && min == 0) out = "Es ist Mittag";
out += ".";
console.log(out);
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// Vira
namespace TellMeTheTime
{
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Time: " + GetTime("11:11"));
Console.ReadKey(true);
}
private static string GetTime(string Time, bool WithMorningAndEvening = false)
{
string[] InfoFromTime = Time.Split(new char[] { ':' });
int hour = int.Parse(InfoFromTime[0]), minute = int.Parse(InfoFromTime[1]);
hour = Clamp(hour, 0, 24);
minute = Clamp(minute, 0, 60);
string ToRet = "Es ist";
if (WithMorningAndEvening)
{
if (hour < 6)
{
return ToRet += " Morgens";
}
if (hour > 18)
{
return ToRet += " Abends";
}
}
if (hour > 12)
{
ToRet = "(PM) " + ToRet;
hour -= 12;
}
else
{
ToRet = "(AM) " + ToRet;
}
if ((hour == 12 && minute == 0) || (hour == 0 && minute == 0))
{
return ToRet += " Punkt zwölf Uhr";
}
int m = minute;
if (m < 15)
{
if (m == 0)
{
return ToRet += " " + NumberToString(m) + " " + NumberToString(hour);
}
else
{
return ToRet += " " + NumberToString(m) + " nach " + NumberToString(hour);
}
}
else if (m == 15)
{
if (m != 12)
{
return ToRet += " " + NumberToString(m) + " " + NumberToString(hour + 1);
}
else
{
return ToRet += " " + NumberToString(m) + " " + NumberToString(12);
}
}
else if (m < 30)
{
if (hour != 12)
{
return ToRet += " " + NumberToString(30 - m) + " vor " + NumberToString(30) + " " + NumberToString(hour + 1);
}
else
{
return ToRet += " " + NumberToString(30 - m) + " vor " + NumberToString(30) + " " + NumberToString(12);
}
}
else if (m == 30)
{
if (hour != 12)
{
return ToRet += " " + NumberToString(m) + " " + NumberToString(hour + 1);
}
else
{
return ToRet += " " + NumberToString(m) + " " + NumberToString(12);
}
}
else if (m < 45)
{
if (hour != 12)
{
return ToRet += " " + NumberToString(45 - m) + " vor Drei-" + NumberToString(15) + " " + NumberToString(hour + 1);
}
else
{
return ToRet += " " + NumberToString(45-m) + " vor Drei-"+NumberToString(15)+" " + NumberToString(12);
}
}
else if (m == 45)
{
if (hour != 12)
{
return ToRet += " Drei-" + NumberToString(m - 30) + " " + NumberToString(hour + 1);
}
else
{
return ToRet += " Drei-" + NumberToString(m - 30) + " " + NumberToString(12);
}
}
else
{
if (hour != 12)
{
return ToRet += " " + NumberToString(60 - m) + " vor " + NumberToString(hour + 1);
}
else
{
return ToRet += " " + NumberToString(60 - m) + " vor " + NumberToString(12);
}
}
}
private static string NumberToString(int number)
{
switch (number)
{
case 0:
return "Punkt";
case 1:
return "Eins";
case 2:
return "Zwei";
case 3:
return "Drei";
case 4:
return "Vier";
case 5:
return "Fünf";
case 6:
return "Sechs";
case 7:
return "Sieben";
case 8:
return "Acht";
case 9:
return "Neun";
case 10:
return "Zehn";
case 11:
return "Elf";
case 12:
return "Zwölf";
case 13:
return "Dreizehn";
case 14:
return "Vierzehn";
case 15:
return "Viertel";
case 30:
return "Halb";
case 60:
return "Punkt";
default:
return "Falsche Eingabe";
}
}
private static int Clamp(int number, int min, int max)
{
if (number <= max && number >= min)
{
return number;
}
else if (number > max)
{
return max;
}
else
{
return min;
}
}
}
}
Lösung von: Thomas Rührig (Htl-Donaustadt (bzw ÖZBF nominiert - TU-Wien))
# -:- coding: utf-8 -:-
import time
##
## Global
##
# Get current time
time_local = time.localtime(time.time())
clock_local = time.asctime(time.localtime(time.time()))
# Set current hours, minutes and seconds
time_hour = time_local[3]
time_min = time_local[4]
time_sec = time_local[5]
# Text for print
text_advanced = ""
text_simple = ""
##
## Names
##
hournames = [
"Zwölf", "Eins", "Zwei", "Drei", "Vier", "Fünf", "Sechs", "Sieben", "Acht", "Neun", "Zehn", "Elf", "Zwölf"
]
minutenames = [
"Null", "Eine", "Zwei", "Drei", "Vier", "Fünf", "Sechs", "Sieben", "Acht", "Neun", "Zehn",
"Elf", "Zwölf", "Dreizehn", "Vierzehn", "Fünfzehn", "Sechszehn", "Siebzehn", "Achtzehn", "Neunzehn", "Zwanzig"
]
##
## Basic
##
# Get type of day
if time_hour < 12:
daytype = ", Morgens"
else:
daytype = ", Abends"
# Get hour and don't let hournames go above 12
if time_hour > 12:
time_hour = time_hour - 12
elif time_hour == 24:
time_hour = time_hour - 12
# Get the right minutetext
if time_min == 1:
minutetext = " Minute"
elif time_min == 59:
minutetext = " Minute"
else:
minutetext = " Minuten"
# Get the right secondtext
if time_sec == 1:
secondtext = " Sekunde und "
else:
secondtext = " Sekunden und "
##
## Start
##
# minute is exactly 0
if time_min == 0:
text_simple = " punkt "
# minute is exactly 15
elif time_min == 15:
text_simple = " viertel nach "
# minute is between 00 and 20 without 15
elif time_min < 20 and not time_min == 15:
text_simple = minutenames[time_min] + minutetext + " nach "
# minute is between 20 and 30
elif time_min < 30 and time_min > 20:
text_advanced = minutenames[30 - time_min] + minutetext + " vor halb "
time_hour = time_hour + 1
# minute is exactly 30
elif time_min == 30:
text_simple = " halb "
if time_hour == 0:
time_hour = 12
else:
time_hour = time_hour + 1
# minute is between 30 and 40
elif time_min > 30 and time_min < 40:
text_advanced = minutenames[time_min - 30] + minutetext + " nach halb "
time_hour = time_hour + 1
# minute is between 40 and 60 without 45
elif time_min > 40 and not time_min == 45:
text_simple = minutenames[60 - time_min] + minutetext + " vor "
time_hour = time_hour + 1
# minute is exactly 45
elif time_min == 45:
text_simple = " viertel vor "
time_hour = time_hour + 1
##
## Show
##
# show me the time, hh:mm:ss
print "\n\t", clock_local, "\n"
# show me the time, written
print ("%d" + secondtext + text_advanced + text_simple + hournames[time_hour] + daytype) % time_sec
## Bei Ausführung des Scripts wird die momentane, zu diesem
## Zeitpunkt gesetzte lokale Computerzeit in Worten ausgegeben
## ..einzig die Sekunden werden als Zahl ausgegeben.
## Beispiel der Ausgabe:
## PS c:\python\scripts> python clock_text.py
##
## Sun Jan 10 20:32:19 2016
##
## 19 Sekunden und Zwei Minuten nach halb Neun, Abends
# Author: L-A Fischer
Lösung von: Lasse-Alexander Fischer ()
#Eingabe der Uhrzeit hh:mm
puts "Bitte geben Sie die Uhrzeit ein: hh:mm"
fulltime = gets.chomp
#Stunden und Minuten trennen
hour = fulltime.split(':')[0].to_i
minutes = fulltime.split(':')[1].to_i
#Zahlen in Wörter umwandeln
mintex = ""
unitex = " Minuten"
hpartex = " nach "
hourtex = ""
clocktex = " Uhr"
dpartex = ""
am = true
numbers = ['eine', 'zwei', 'drei', 'vier', 'fünf', 'sechs', 'sieben', 'acht', 'neun', 'zehn', 'elf', 'zwölf', 'dreizehn', 'vierzehn', 'viertel', 'sechzehn', 'siebzehn', 'achtzehn', 'neunzehn', 'zwanzig', 'halb']
#Minuten
if minutes == 0
mintex = "Punkt "
hpartex = ""
unitex = ""
elsif minutes <= 20
mintex = numbers[minutes-1]
elsif minutes < 30 && minutes > 20
mintex = numbers[29-minutes]
hpartex = " vor halb "
hour+=1
elsif minutes == 30
hpartex = "halb "
unitex = ""
hour+=1
elsif minutes < 40 && minutes > 30
mintex = numbers[minutes-31]
hpartex = " nach halb "
hour+=1
elsif minutes <= 59 && minutes > 40
mintex = numbers[59-minutes]
hpartex = " vor "
hour+=1
end
if minutes == 1
unitex = " Minute"
elsif minutes == 15 || minutes == 45
unitex = ""
end
#Stunden
numbers[0] = 'ein'
if hour > 12
hour-=12
am = false
end
hourtex = numbers[hour-1]
if hour == 0
hourtex == "null"
end
#Tageszeit
if am && hour < 6
dpartex = " morgens"
end
if !am && hour >= 6
dpartex = " abends"
end
#Mitternacht
if hour == 0 && minutes == 0
mintex = "Mi"
unitex = "tt"
hpartex = "er"
hourtex = "na"
clocktex = "ch"
dpartex = "t"
end
#Ausgabe in Textform
puts "Es ist #{mintex}#{unitex}#{hpartex}#{hourtex}#{clocktex}#{dpartex}!"
Lösung von: Name nicht veröffentlicht
REPORT znl_internet.
DATA: lv_nachmittag TYPE abap_bool VALUE abap_false,
lv_zeit TYPE string,
lv_tageszeit TYPE string,
lv_minuten TYPE string,
lv_es_ist TYPE string,
lv_ausgabe TYPE string,
lv_vornach TYPE string,
lv_vorminuten TYPE n.
PARAMETERS: p_zeit TYPE atim DEFAULT sy-uzeit.
lv_es_ist = 'Es ist'.
" Tageszeit
IF p_zeit(2) < 10 AND p_zeit(2) >= 0.
lv_tageszeit = 'am Morgen'.
ELSEIF p_zeit(2) >= 10 AND p_zeit(2) < 14.
lv_tageszeit = 'am Mittag'.
ELSEIF p_zeit(2) >= 14 AND p_zeit(2) < 19.
lv_tageszeit = 'am nachmittag'.
ELSEIF p_zeit(2) >= 19 AND p_zeit(2) < 24.
lv_tageszeit = 'am Abend'.
ENDIF.
" Stundenzeit auf Amerikanisch AM/PM
IF p_zeit(2) > 12.
p_zeit(2) = p_zeit(2) - 12.
ENDIF.
" Vorrausschauende Zeit
IF p_zeit+2(2) > 10 OR p_zeit+2(2) = 11.
p_zeit(2) = p_zeit(2) + 1.
ENDIF.
" Minutenangabe
CASE p_zeit+3(1).
WHEN 0.
lv_minuten = 'zehn Minuten'.
WHEN 1.
lv_minuten = 'eine Minute'.
WHEN 2.
lv_minuten = 'zwei Minuten'.
WHEN 3.
lv_minuten = 'drei Minuten'.
WHEN 4.
lv_minuten = 'vier Minuten'.
WHEN 5.
IF p_zeit+2(1) <> 1 AND p_zeit+2(1) <> 4.
lv_minuten = 'fünf Minuten'.
ENDIF.
WHEN 6.
lv_minuten = 'sechs Minuten'.
WHEN 7.
lv_minuten = 'sieben Minuten'.
WHEN 8.
lv_minuten = 'acht Minuten'.
WHEN 9.
lv_minuten = 'neun Minuten'.
ENDCASE.
"vor oder nach jeweiliger viertel / halben /dreiviertel /Stunde
IF p_zeit+2(2) <= 10 AND p_zeit+2(2) > 0.
lv_vornach = 'nach um'.
ELSEIF p_zeit+2(2) < 30 AND p_zeit+2(2) >= 20.
lv_vornach = 'vor halb'.
ELSEIF p_zeit+2(2) =< 40 AND p_zeit+2(2) > 30.
lv_vornach = 'nach halb'.
ELSEIF p_zeit+2(2) >= 50.
lv_vornach = 'vor um'.
ELSEIF p_zeit+2(2) < 45 AND p_zeit+2(2) > 40.
lv_vornach = 'kurz vor dreiviertel'.
ELSEIF p_zeit+2(2) > 45 AND p_zeit+2(2) < 50.
lv_vornach = 'kurz nach dreiviertel'.
ELSEIF p_zeit+2(2) < 15 AND p_zeit+2(2) > 10.
lv_vornach = 'kurz vor viertel'.
ELSEIF p_zeit+2(2) > 15 AND p_zeit+2(2) < 20.
lv_vornach = 'kurz nach viertel'.
ELSEIF p_zeit+2(2) = 00.
lv_vornach = 'um'.
ELSEIF p_zeit+2(2) = 15.
lv_vornach = 'viertel'.
ELSEIF p_zeit+2(2) = 30.
lv_vornach = 'halb'.
ELSEIF p_zeit+2(2) = 45.
lv_vornach = 'dreiviertel'.
ENDIF.
IF p_zeit+2(2) > 20 AND p_zeit+2(2) < 30.
lv_vorminuten = ( ( p_zeit+2(2) - 30 ) * ( -1 ) ).
lv_minuten = lv_vorminuten.
ELSEIF p_zeit+2(2) >= 50.
lv_vorminuten = ( ( p_zeit+2(2) - 60 ) * ( -1 ) ).
lv_minuten = lv_vorminuten.
ENDIF.
" Stundenangabe
CASE p_zeit(2).
WHEN 0.
lv_zeit = 'null'.
WHEN 1.
lv_zeit = 'ein'.
WHEN 2.
lv_zeit = 'zwei'.
WHEN 3.
lv_zeit = 'drei'.
WHEN 4.
lv_zeit = 'vier'.
WHEN 5.
lv_zeit = 'fünf'.
WHEN 6.
lv_zeit = 'sechs'.
WHEN 7.
lv_zeit = 'sieben'.
WHEN 8.
lv_zeit = 'acht'.
WHEN 9.
lv_zeit = 'neun'.
WHEN 10.
lv_zeit = 'zehn'.
WHEN 11.
lv_zeit = 'elf'.
WHEN 12.
lv_zeit = 'zwölf'.
ENDCASE.
IF p_zeit+2(2) > 20 AND p_zeit+2(2) < 30 OR p_zeit+2(2) >= 50.
CASE lv_minuten.
WHEN 0.
lv_minuten = 'zehn Minuten'.
WHEN 1.
lv_minuten = 'eine Minute'.
WHEN 2.
lv_minuten = 'zwei Minuten'.
WHEN 3.
lv_minuten = 'drei Minuten'.
WHEN 4.
lv_minuten = 'vier Minuten'.
WHEN 5.
IF p_zeit+2(1) <> 1 AND p_zeit+2(1) <> 4.
lv_minuten = 'fünf Minuten'.
ENDIF.
WHEN 6.
lv_minuten = 'sechs Minuten'.
WHEN 7.
lv_minuten = 'sieben Minuten'.
WHEN 8.
lv_minuten = 'acht Minuten'.
WHEN 9.
lv_minuten = 'neun Minuten'.
ENDCASE.
ENDIF.
" Zusammensetzung des Satzes.
IF p_zeit+2(2) < 15 AND p_zeit+2(2) > 10 OR p_zeit+2(2) > 15 AND p_zeit+2(2) < 20 OR p_zeit+2(2) > 45 AND p_zeit+2(2) < 50 OR p_zeit+2(2) < 45 AND p_zeit+2(2) > 40.
CONCATENATE lv_es_ist lv_vornach lv_zeit lv_tageszeit INTO lv_ausgabe SEPARATED BY space.
ELSEIF p_zeit+2(2) >= 50 OR p_zeit+2(2) > 20 AND p_zeit+2(2) < 30.
CONCATENATE lv_es_ist lv_minuten lv_vornach lv_zeit lv_tageszeit INTO lv_ausgabe SEPARATED BY space.
ELSE.
CONCATENATE lv_es_ist lv_minuten lv_vornach lv_zeit lv_tageszeit INTO lv_ausgabe SEPARATED BY space.
ENDIF.
WRITE: lv_ausgabe.
Lösung von: Nick Lengner (Zalaris AG)
Verifikation/Checksumme:
Siehe Aufgabentext.
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 2 |
Schwierigkeit: | Mittel |
Webcode: | wmgj-vgnk |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |