elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Horas, hora, minutos y minuto.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Horas, hora, minutos y minuto.  (Leído 2,286 veces)
Meta


Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Horas, hora, minutos y minuto.
« en: 26 Noviembre 2023, 13:48 pm »

Buenas campeones:

Quiero lograr de alguna forma posible cuando se me presenta el tiempo en horas y minutos en hacer las cosas bien desde el principio. Por ejemplo, introduzco el valor 80 en la consola. Que en realidad son 80 minutos y equivale a una hora y 20 minutos.

Si aparece 2 minutos, que lo diga en plural, y si es un minuto que lo siga en singular, lo mismo para las horas, si dice 7 horas, que sea horassssss, con la s, y si es una hora, que ponga sin la s, es decir, hora, en singular.

Si introduzco 80, me tiene que responder:
> 1 hora y 20 minutos.


Introduzco: 1
> 0 Horas y 1 minuto.
Aquí solo debe aparecer esto: > 1 minuto, sin usar la palabra hora porque ya es cero horas.

Introduzco: 61
> 1 hora y 1 minuto.
Como se puede ver, hora y minuto en singular.

Introduzco: 121
> 2 horas y 1 minuto.
Si se fijan, la hora en horas con la s porque son más de una hora y un minuto sin s al final porque es solo un minuto.

¿Se entiende lo que quiero lograr?

Me he machacado mucho la cabeza y no me sale como quiero.

Uso el lenguaje C#. Código hecho hasta ahora gracias a los compañeros de este foro.

Código
  1. using System;
  2.  
  3. namespace Minutos_Horas_Consola_04
  4. {
  5.    internal class Program
  6.    {
  7.        static void Main(string[] args)
  8.        {
  9.            while (true)
  10.            {
  11.                int totalMinutos;
  12.                Console.Write("Ingresa el valor de minutos: ");
  13.                totalMinutos = int.Parse(Console.ReadLine());
  14.  
  15.                // ¿Es igual a 1 minuto?
  16.                if ((totalMinutos % 60) == 1)
  17.                {
  18.                    Console.WriteLine("> " + totalMinutos / 60 + " hora y " + totalMinutos % 60 + " minuto.\n");
  19.                    Console.WriteLine("Estoy en el IF 1.");
  20.                    Console.WriteLine("-------------------------");
  21.                }
  22.  
  23.                // ¿Es mayor a 60 segundos o 1 minuto?
  24.                if ((totalMinutos % 60) > 1)
  25.                {
  26.                    Console.WriteLine("> " + totalMinutos / 60 + " hora y " + totalMinutos % 60 + " minutos.\n");
  27.                    Console.WriteLine("Estoy en el IF 2.");
  28.                    Console.WriteLine("-------------------------");
  29.                }
  30.  
  31.                // ¿Es igual a 60 segundos o 1 minuto?
  32.                if ((totalMinutos % 60) == 0)
  33.                {
  34.                    Console.WriteLine("> " + totalMinutos / 60 + " hora y " + totalMinutos % 60 + " minutos.\n");
  35.                    Console.WriteLine("Estoy en el IF 3.");
  36.                    Console.WriteLine("-------------------------");
  37.                }
  38.            }
  39.        }
  40.    }
  41. }

¿Se me escapa algo?

Saludos.


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.072



Ver Perfil
Re: Horas, hora, minutos y minuto.
« Respuesta #1 en: 26 Noviembre 2023, 19:44 pm »

Quizá algo así:

Código
  1. using System;
  2.  
  3. public class Program {
  4.  static void Main() {
  5.    while (true) {
  6.      Console.Write("Ingresa el valor de minutos: ");
  7.      int totalMinutos = int.Parse(Console.ReadLine());
  8.      int h = totalMinutos / 60;
  9.      int m = totalMinutos % 60;
  10.      string hs = (h == 1) ? "hora" : "horas";
  11.      string ms = (m == 1) ? "minuto" : "minutos";
  12.      Console.WriteLine("> {0} {1} y {2} {3}", h, hs, m, ms);
  13.    }
  14.  }
  15. }
  16.  



Hacer los cálculos antes en sus propias variables o hacerlas en el Console.WriteLine pero podría quedar muy largo.

Usar el operador ternario para condiciones sencillas como las de determinar el poner horas/minutos o minuto/minutos

Usar String formateada en el Console.Write para mejor legibilidad y menor tamaño

Todo lo probé compilando con el viejo .Net2.0 y también con el .Net4.8 para descartar alguna incompatibilidad con esas instrucciones, como ves todo funciona bien


En línea

Meta


Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Re: Horas, hora, minutos y minuto.
« Respuesta #2 en: 26 Noviembre 2023, 20:30 pm »

Muy buen código rápido.  ;-) ;-) ;-) ;-)

Hay una cosa que se te escapa.

En vez de poner:
> 0 horas y 1 minuto

Debe solo aparecer esto:
> 1 minuto.

Ya que el 0 horas no pinta nada. Otra cosa que sea al revés como esto:
> 1 Hora y 0 minutos. Así me da igual. O simplemente se pone a > 1 Hora.

Todo parece perfecto menos la parte 0 horas.

Por cierto, la forma nueva de mostrar en consola es esta.
Código
  1. Console.WriteLine($"> {h} {hs} y {m} {ms}");

Tu código es elegante.  ;D

« Última modificación: 26 Noviembre 2023, 20:33 pm por Meta » En línea

Meta


Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Re: Horas, hora, minutos y minuto.
« Respuesta #3 en: 27 Noviembre 2023, 19:44 pm »

Buenas de nuevo.

Ahora si lo quiero el funcionamiento tal cual como debe ser.


No digo que sea el mejor código pero funciona de maravilla.

Código
  1. using System;
  2.  
  3. namespace Minutos_Horas_Consola_04
  4. {
  5.    internal class Program
  6.    {
  7.        static void Main(string[] args)
  8.        {
  9.            #region Configuración ventana.
  10.            // Título de la ventana.
  11.            Console.Title = "De solo a Minutos a Horas y Minutos";
  12.  
  13.            // Tamaño de la ventana, x, y, o ancho y alto.
  14.            const byte ANCHO_X = 70, ALTO_Y = 25;
  15.            Console.SetWindowSize(ANCHO_X, ALTO_Y);
  16.  
  17.            // Color de fondo.
  18.            Console.BackgroundColor = ConsoleColor.Green;
  19.  
  20.            // Color de las letras.
  21.            Console.ForegroundColor = ConsoleColor.Black;
  22.  
  23.            // Limpiar pantalla y dejarlo todo en color de fondo.
  24.            Console.Clear();
  25.  
  26.            // Visible el cursor.
  27.            Console.CursorVisible = true;
  28.            #endregion
  29.  
  30.            while (true)
  31.            {
  32.                int totalMinutos;
  33.                Console.Write("Ingresa el valor de minutos: ");
  34.                totalMinutos = int.Parse(Console.ReadLine());
  35.  
  36.                // Cálculos.
  37.                int horas = totalMinutos / 60;
  38.                int minutos = totalMinutos % 60;
  39.  
  40.                // ¿0 horas y 1 minuto?
  41.                if ((horas == 0) && (minutos == 1))
  42.                {
  43.                    Console.WriteLine($"> {minutos} minuto.");
  44.                }
  45.  
  46.                // ¿0 horas y 0 minuto?
  47.                if ((horas == 0) && (minutos == 0))
  48.                {
  49.                    Console.WriteLine($"> {minutos} minutos.");
  50.                }
  51.  
  52.                // ¿0 horas y más de 1 minuto?
  53.                if ((horas == 0) && (minutos > 1))
  54.                {
  55.                    Console.WriteLine($"> {minutos} minutos.");
  56.                }
  57.  
  58.                // ¿1 hora y 0 minutos?
  59.                if ((horas == 1) && (minutos == 0))
  60.                {
  61.                    Console.WriteLine($"> {horas} hora.");
  62.                }
  63.  
  64.                // ¿Más de una hora y 0 minutos?
  65.                if ((horas > 1) && (minutos == 0))
  66.                {
  67.                    Console.WriteLine($"> {horas} horas.");
  68.                }
  69.  
  70.                // ¿1 hora y 1 minuto?
  71.                if ((horas == 1) && (minutos == 1))
  72.                {
  73.                    Console.WriteLine($"> {horas} hora y {minutos} minuto.");
  74.                }
  75.  
  76.                // ¿1 hora y más de 1 minuto?
  77.                if ((horas == 1) && (minutos > 1))
  78.                {
  79.                    Console.WriteLine($"> {horas} hora y {minutos} minutos.");
  80.                }
  81.  
  82.                // ¿Más de 1 hora y 1 minuto?
  83.                if ((horas > 1) && (minutos == 1))
  84.                {
  85.                    Console.WriteLine($"> {horas} horas y {minutos} minuto.");
  86.                }
  87.  
  88.                // ¿Más de 1 horas y más de 1 minuto?
  89.                if ((horas > 1) && (minutos > 1))
  90.                {
  91.                    Console.WriteLine($"> {horas} horas y {minutos} minutos.");
  92.                }
  93.            }
  94.        }
  95.    }
  96. }
  97.  

Son solo nueve combinaciones.

Saludos.
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.072



Ver Perfil
Re: Horas, hora, minutos y minuto.
« Respuesta #4 en: 27 Noviembre 2023, 23:47 pm »

Podrías ir construyendo la String a imprimir poco a poco y al final imprimirla ya hecha para evitarse tantos Console.WriteLine, también veo que se pueden reducir tus IF, en especial los que muestran exactamente lo mismo, pero así como lo has hecho y comentado tiene la lógica y solo le faltaría reducirla evitando redundancia.

Haciendo unos retoques al código que puse anteriormente puede quedar así:

Código
  1. using System;
  2.  
  3. public class Program {
  4.  static void Main() {
  5.    while (true) {
  6.      Console.Write("Ingresa el valor de minutos: ");
  7.      int totalMinutos = int.Parse(Console.ReadLine());
  8.      int h = totalMinutos / 60;
  9.      int m = totalMinutos % 60;
  10.      string hs = (h == 1) ? "hora" : "horas";
  11.      string ms = (m == 1) ? "minuto" : "minutos";
  12.      string ss = "> ";
  13.      if (h != 0) ss+= h + " " + hs;
  14.      if (h != 0 && m != 0) ss+= " y ";
  15.      if (m != 0 || h == 0) ss+= m + " " + ms;
  16.      Console.WriteLine(ss);
  17.    }
  18.  }
  19. }

« Última modificación: 27 Noviembre 2023, 23:52 pm por EdePC » En línea

Meta


Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Re: Horas, hora, minutos y minuto.
« Respuesta #5 en: 28 Noviembre 2023, 00:09 am »

Eres un crack.  ;-) ;-) ;-) ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda convertir minutos a horas y minutos !
Java
xbyxrorroh 5 12,447 Último mensaje 27 Junio 2013, 01:53 am
por Debci
Poner timer en horas o minutos?
Programación Visual Basic
TheJucas21 1 1,921 Último mensaje 28 Julio 2014, 03:55 am
por MCKSys Argentina
Como Registrar hora y minuto
Java
soy_nicanor 1 1,456 Último mensaje 28 Abril 2015, 05:47 am
por nolasco281
calcular horas + minutos en c
Programación C/C++
martha71404 0 2,420 Último mensaje 24 Octubre 2015, 01:29 am
por martha71404
Minutos y minuto
.NET (C#, VB.NET, ASP)
Meta 6 4,305 Último mensaje 28 Noviembre 2023, 21:19 pm
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines