Autor Tema: Java hacer un programa para dar la hora hh mm ss metodología POO describir clase  (Leído 2068 veces)

drate

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Buenas tardes.
Estoy tratando de resolver el problema de las N-Reinas en Java.
Tengo una clase llamada NReinas. Y el método:
private static resolverReinas( int n){}.
Según he leído debo usar Bactrack para resolverlo pero no consigo ni declarar el array con el que trabajar y menos aún el método recursivo que necesito dentro de dicho método.
Me pueden ayudar? Muchas gracias, un saludo.
« Última modificación: 19 de Junio 2022, 13:26 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Duda java
« Respuesta #1 en: 14 de Febrero 2022, 17:00 »
Desconozco ese algoritmo.

En youtube alguien lo explica, a ver si puede servirte: https://www.youtube.com/watch?v=zhTdhoyMfO4
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Testigosdelol

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Re: Duda java
« Respuesta #2 en: 23 de Marzo 2022, 04:39 »
Buenas noches, me puede ayudar con el ejercicio siguiente por favor.

EJERCICIO

- Describa dos clases y tres objetos por cada clase
- Realice el siguiente ejercicio teniendo en cuenta la metodología POO
- Hacer un programa que al dar la hora (hh, mm, ss) mmuestre la hora después de 2 horas, 10 minutos y 20 segundos.
« Última modificación: 19 de Junio 2022, 13:25 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Duda java
« Respuesta #3 en: 23 de Marzo 2022, 12:20 »
Lo de "describa dos clases y tres objetos por cada clase", sinceramente, no sé qué quieren indicar con eso.
Para el ejercicio que propone, lo de incrementar un tiempo, no se necesitan dos clases.

Sobre lo de incrementar el tiempo, el enunciado también resulta un poco ambiguo. Voy a interpretar que lo que se pide es leer por teclado un tiempo pidiendo las horas, luego los minutos y después los segundos.
Y mostrar ese tiempo incrementado en las cantidades indicadas.

Bueno, podemos escribir una clase que reciba por constructor las horas, minutos y segundos iniciales.
Y tenga un método que retorne el tiempo incrementado.

Incrementar el tiempo, no es simplemente sumar y ya está.
Hay que tener en cuenta que las horas no puede tener un valor igual1 o mayor de 24.
Y los minutos y segundos no pueden ser igual o mayor a 60.

Si los segundos superan el valor 60, su contador se reinicia a cero y solo suma la diferencia que hay entre ese valor y 60.

Es decir, si comenzamos con 50 segundos, y le incrementamos 20, su valor no puede ser 70.
Será 70 - 60 = 10
Y esto además implicará que hay que añadir +1 minuto al incremento previsto.

Esta podría ser la clase:
Código: [Seleccionar]
public class Tiempo {

//Tiempo inicial, valores se inician por constructor
private int horas;
private int minutos;
private int segundos;

public Tiempo(int horas, int minutos, int segundos) {
this.horas = horas;
this.minutos = minutos;
this.segundos = segundos;
}

public String getTiempoInicial() {
return String.format("%02d:%02d:%02d", horas, minutos, segundos);
}

public String getTiempoIncrementado() {
//Incrementos a aplicar
int incHoras = 2, incMinutos = 10, incSegundos = 20;
//Tiempos que se van a incrementar respecto al tiempo inicial
int horasInc, minutosInc, segundosInc;
/*
* Para incrementar sumamos los incrementos al tiempo inicial
* teniendo en cuenta los limites de cada magnitud.
* Por ejemplo, si al sumar los segundos supera o iguala el valor 60,
* implica que los segundos han de adoptar ese valor - 60 y que hay
* que incrementar 1 minuto extra.
*/
//Incrementamos segundos
segundosInc = segundos + incSegundos;
//Comprobamos límite 60 segundos
if (segundosInc >= 60) {
segundosInc -= 60; //Restamos 60
incMinutos++;//Añadimos 1 minuto al incremento
}
//Mismo proceso con los minutos
minutosInc = minutos + incMinutos;
if (minutosInc >= 60) {
minutosInc -= 60;
incHoras++;
}
//Y con horas, límite es 24
horasInc = horas + incHoras;
if (horasInc >= 24)
horasInc -= 24;
//Retornamos tiempo incrementado
return String.format("%02d:%02d:%02d", horasInc, minutosInc, segundosInc);
}

}

Podemos ponerlo a prueba con este código:
Código: [Seleccionar]
public class TestTiempo {

public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

System.out.print("Indica tiempo en hh: ");
int hh = teclado.nextInt();
System.out.print("Indica tiempo en mm: ");
int mm = teclado.nextInt();
System.out.print("Indica tiempo en ss: ");
int ss = teclado.nextInt();

Tiempo tmp = new Tiempo(hh,mm,ss);

System.out.println("\nTiempo inicial: " + tmp.getTiempoInicial());
System.out.println("Tiempo incrementado: " + tmp.getTiempoIncrementado());
teclado.close();
}

}

Vemos en pantalla que parece cumplir con lo que se pide:
Citar
Indica tiempo en hh: 10
Indica tiempo en mm: 40
Indica tiempo en ss: 50

Tiempo inicial: 10:40:50
Tiempo incrementado: 12:51:10
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".