Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

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

Bitte melde dich an um einen Kommentar abzugeben

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 Gressly Freimann (SANTIS Training AG)

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

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 2
Schwierigkeit: Mittel
Webcode: wmgj-vgnk
Autor: Philipp Gressly Freimann (SANTIS Training AG)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen