Convertir el tiempo dado en palabras

Dado un tiempo en el formato de hh:mm (formato de 12 horas) 0 < hh < 12, 0 <= mm < 60. La tarea es convertirlo en palabras como se muestra:
Ejemplos: 
 

Input : h = 5, m = 0
Output : five o' clock

Input : h = 6, m = 24
Output : twenty four minutes past six

Los casos de esquina son m = 0, m = 15, m = 30 y m = 45.
 

6:00 six o'clock
6:10 ten minutes past six
6:15 quarter past six
6:30 half past six
6:45 quarter to seven
6:47 thirteen minutes to seven

La idea es usar la declaración if-else-if para determinar el tiempo en palabras. De acuerdo con el ejemplo anterior, en función de los minutos, podemos categorizar el tiempo en palabras en 8, que son minutos iguales a 0, 15, 30, 45, 1, 59, y en un rango inferior a 30 o superior a 30. Verifique el valor de los minutos e imprima en consecuencia.
A continuación se muestra la implementación de este enfoque:
 

C++

// C++ program to convert time into words
#include <bits/stdc++.h>
using namespace std;
 
// Print Time in words.
void printWords(int h, int m)
{
    char nums[][64] = { "zero", "one", "two", "three", "four",
                        "five", "six", "seven", "eight", "nine",
                        "ten", "eleven", "twelve", "thirteen",
                        "fourteen", "fifteen", "sixteen", "seventeen",
                        "eighteen", "nineteen", "twenty", "twenty one",
                        "twenty two", "twenty three", "twenty four",
                        "twenty five", "twenty six", "twenty seven",
                        "twenty eight", "twenty nine",
                      };
 
    if (m == 0)
        printf("%s o' clock\n", nums[h]);
 
    else if (m == 1)
        printf("one minute past %s\n", nums[h]);
 
    else if (m == 59)
        printf("one minute to %s\n", nums[(h % 12) + 1]);
 
    else if (m == 15)
        printf("quarter past %s\n", nums[h]);
 
    else if (m == 30)
        printf("half past %s\n", nums[h]);
 
    else if (m == 45)
        printf("quarter to %s\n", nums[(h % 12) + 1]);
 
    else if (m <= 30)
        printf("%s minutes past %s\n", nums[m], nums[h]);
 
    else if (m > 30)
        printf("%s minutes to %s\n", nums[60 - m],
                                     nums[(h % 12) + 1]);
}
 
// Driven Program
int main()
{
    int h = 6;
    int m = 24;
 
    printWords(h, m);
    return 0;
}

Java

// Java program to convert time into words
class GFG
{
     
    // Print Time in words.
    static void printWords(int h, int m)
    {
        String nums[] = { "zero", "one", "two", "three", "four",
                            "five", "six", "seven", "eight", "nine",
                            "ten", "eleven", "twelve", "thirteen",
                            "fourteen", "fifteen", "sixteen", "seventeen",
                            "eighteen", "nineteen", "twenty", "twenty one",
                            "twenty two", "twenty three", "twenty four",
                            "twenty five", "twenty six", "twenty seven",
                            "twenty eight", "twenty nine",
                        };
     
        if (m == 0)
            System.out.println(nums[h] + " o' clock ");
     
        else if (m == 1)
            System.out.println("one minute past " +
                                            nums[h]);
     
        else if (m == 59)
            System.out.println("one minute to " +
                            nums[(h % 12) + 1]);
     
        else if (m == 15)
            System.out.println("quarter past " + nums[h]);
     
        else if (m == 30)
            System.out.println("half past " + nums[h]);
     
        else if (m == 45)
            System.out.println("quarter to " +
                                nums[(h % 12) + 1]);
     
        else if (m <= 30)
            System.out.println( nums[m] + " minutes past " +
                                                    nums[h]);
     
        else if (m > 30)
            System.out.println( nums[60 - m] + " minutes to " +    
                                                nums[(h % 12) + 1]);
    }
     
    // Driven code
    public static void main(String []args)
    {
        int h = 6;
        int m = 24;
        printWords(h, m);
    }
}
 
// This code is contributed by ihritik

Python3

# Python3 program to convert
# time into words
 
# Print Time in words.
def printWords(h, m):
    nums = ["zero", "one", "two", "three", "four",
            "five", "six", "seven", "eight", "nine",
            "ten", "eleven", "twelve", "thirteen",
            "fourteen", "fifteen", "sixteen",
            "seventeen", "eighteen", "nineteen",
            "twenty", "twenty one", "twenty two",
            "twenty three", "twenty four",
            "twenty five", "twenty six", "twenty seven",
            "twenty eight", "twenty nine"];
 
    if (m == 0):
        print(nums[h], "o' clock");
 
    elif (m == 1):
        print("one minute past", nums[h]);
 
    elif (m == 59):
        print("one minute to", nums[(h % 12) + 1]);
 
    elif (m == 15):
        print("quarter past", nums[h]);
 
    elif (m == 30):
        print("half past", nums[h]);
 
    elif (m == 45):
        print("quarter to", (nums[(h % 12) + 1]));
 
    elif (m <= 30):
        print(nums[m],"minutes past", nums[h]);
 
    elif (m > 30):
        print(nums[60 - m], "minutes to",
              nums[(h % 12) + 1]);
 
# Driver Code
h = 6;
m = 24;
 
printWords(h, m);
 
# This code is contributed
# by Princi Singh

C#

// C# program to convert time into words
using System;
 
class GFG
{
     
    // Print Time in words.
    static void printWords(int h, int m)
    {
        string [] nums = { "zero", "one", "two", "three", "four",
                            "five", "six", "seven", "eight", "nine",
                            "ten", "eleven", "twelve", "thirteen",
                            "fourteen", "fifteen", "sixteen", "seventeen",
                            "eighteen", "nineteen", "twenty", "twenty one",
                            "twenty two", "twenty three", "twenty four",
                            "twenty five", "twenty six", "twenty seven",
                            "twenty eight", "twenty nine",
                        };
     
        if (m == 0)
            Console.WriteLine(nums[h] + " o' clock ");
     
        else if (m == 1)
            Console.WriteLine("one minute past " + nums[h]);
     
        else if (m == 59)
            Console.WriteLine("one minute to " +
                                nums[(h % 12) + 1]);
     
        else if (m == 15)
            Console.WriteLine("quarter past " + nums[h]);
     
        else if (m == 30)
            Console.WriteLine("half past " + nums[h]);
     
        else if (m == 45)
            Console.WriteLine("quarter to " +
                                nums[(h % 12) + 1]);
     
        else if (m <= 30)
            Console.WriteLine( nums[m] + " minutes past " +
                                                    nums[h]);
     
        else if (m > 30)
            Console.WriteLine( nums[60 - m] + " minutes to " +
                                            nums[(h % 12) + 1]);
    }
     
    // Driven code
    public static void Main()
    {
        int h = 6;
        int m = 24;
        printWords(h, m);
    }
}
 
// This code is contributed by ihritik

PHP

<?php
// PHP program to convert
// time into words
 
// Print Time in words.
function printWords($h, $m)
{
    $nums = array("zero", "one", "two", "three", "four",
                  "five", "six", "seven", "eight", "nine",
                  "ten", "eleven", "twelve", "thirteen",
                  "fourteen", "fifteen", "sixteen", "seventeen",
                  "eighteen", "nineteen", "twenty", "twenty one",
                  "twenty two", "twenty three", "twenty four",
                  "twenty five", "twenty six", "twenty seven",
                  "twenty eight", "twenty nine");
 
    if ($m == 0)
        echo $nums[$h],
             "o' clock\n" ;
 
    else if ($m == 1)
        echo "one minute past ",
                $nums[$h], "\n";
 
    else if ($m == 59)
        echo "one minute to ",
             $nums[($h % 12) + 1], "\n";
 
    else if ($m == 15)
        echo "quarter past ",
             $nums[$h], "\n";
 
    else if ($m == 30)
        echo "half past ",
           $nums[$h],"\n";
 
    else if ($m == 45)
        echo "quarter to ",
             ($nums[($h % 12) + 1]), "\n";
 
    else if ($m <= 30)
        echo $nums[$m],
             " minutes past ",
               $nums[$h],"\n";
 
    else if ($m > 30)
        echo $nums[60 - $m],
             " minutes to ",
             $nums[($h % 12) + 1], "\n";
}
 
// Driver Code
$h = 6;
$m = 24;
 
printWords($h, $m);
 
// This code is contributed by aj_36
?>

Javascript

<script>
    // Javascript program to convert time into words
     
    // Print Time in words.
    function printWords(h, m)
    {
        let nums = [ "zero", "one", "two", "three", "four",
                            "five", "six", "seven", "eight", "nine",
                            "ten", "eleven", "twelve", "thirteen",
                            "fourteen", "fifteen", "sixteen", "seventeen",
                            "eighteen", "nineteen", "twenty", "twenty one",
                            "twenty two", "twenty three", "twenty four",
                            "twenty five", "twenty six", "twenty seven",
                            "twenty eight", "twenty nine",
                        ];
       
        if (m == 0)
            document.write(nums[h] + " o' clock " + "</br>");
       
        else if (m == 1)
            document.write("one minute past " + nums[h] + "</br>");
       
        else if (m == 59)
            document.write("one minute to " +
                                nums[(h % 12) + 1] + "</br>");
       
        else if (m == 15)
            document.write("quarter past " + nums[h] + "</br>");
       
        else if (m == 30)
            document.write("half past " + nums[h] + "</br>");
       
        else if (m == 45)
            document.write("quarter to " + nums[(h % 12) + 1] + "</br>");
       
        else if (m <= 30)
            document.write( nums[m] + " minutes past " + nums[h] + "</br>");
       
        else if (m > 30)
            document.write( nums[60 - m] + " minutes to " + nums[(h % 12) + 1] + "</br>");
    }
     
    let h = 6;
    let m = 24;
    printWords(h, m);
     
</script>

Producción : 
 

twenty four minutes past six

Complejidad de tiempo: O(1)

Este artículo es una contribución de Anuj Chauhan . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *