Java - No se resolver estos ejercicios

 
Vista:
sin imagen de perfil

No se resolver estos ejercicios

Publicado por Alba (2 intervenciones) el 21/11/2022 19:10:20
Holaa buenas tardes, soy estudiante de ingeniería de primer año y estoy bastante atascada con estos 3 problemas, no veo muy claro como hacerlo y estoy bastante bloqueada, agradecería enormemente la ayuda. Un saludo y gracias de antemano



1 Una Secuencia Curiosa (SC) es una secuencia de números enteros positivos que satisface las dos siguientes condiciones:
• la longitud de la secuencia es mayor o igual a 2
• el sumatorio de todos los valores que la conforman es divisible por el último valor de la secuencia. • El final de la secuencia de una secuencia curiosa se indica con cero.
A continuación, se proporcionan algunos ejemplos de secuencias curiosas y otras que no lo son:
6 3 0 es una SC de longitud 2
18 3 5 2 0 es una SC de longitud 4
34 8 21 7 10 0 es una SC de longitud 5
4 23 11 0 NO es una SC
0 NO es una SC
4 0 NO es una SC
En primer lugar, se pide implementar un programa Java que, dada una secuencia de enteros leída de teclado, determine si es una secuencia curiosa como se muestra en los ejemplos anteriores.


2 Como continuación del ejercicio 1 propuesto en la práctica, una Frase Multicuriosa (FM) está formada por una o más secuencias curiosas. Estas secuencias pueden tener la misma longitud o longitudes diferentes. Se pide implementar un programa Java que lea de teclado una sucesión de secuencias de números, analice si es una FM, y escriba el resultado por pantalla, informando del número de SC que componen la frase. La sucesión de entradas finaliza con un -1. Por ejemplo, para la entrada de la izquierda el resultado será “Es una FM compuesta por 3 SC.”, y para la entrada de la derecha “NO es una FM.”. En ambos casos, el programa procesará todas las entradas hasta el -1 final antes de mostrar el resultado.
6 3 0 4 23 11 0
34 8 21 7 10 0 34 8 5 5 26 0 18 3 5 2 0 -1
-1

3. Se debe escribir un programa Java que muestre en la pantalla del computador el calendario de un mes de cualquier año a partir de 1900, o bien que genere un fichero de texto con un año completo, o bien muestre por pantalla para una fecha determinada su día de la semana. El programa deberá presentar los meses en un formato similar al siguiente:
Noviembre 2022
L M X J V S D
----------------------------
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Las distintas opciones del programa se podrán escoger de un menú como el que sigue:
---------------------------------------
Menú del programa:
1- Calendario de un año
2- Calendario de un mes
3- ¿Qué día de la semana fue/es?
4- Salir del programa
---------------------------------------
Opción:
El programa debe diseñarse de modo que las entradas desde el teclado sean robustas. Si se introduce desde el teclado un dato incorrecto o inapropiado, el programa debe ser capaz de detectarlo y solicitar una nueva introducción.
Nota: Es útil recordar que un año es bisiesto si es múltiplo de 4, aunque los múltiplos de 100 no son bisiestos y los de 400 si lo son. También puede ser útil saber que el 1 de enero de 1900 fue lunes.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

No se resolver estos ejercicios

Publicado por Kabuto (1381 intervenciones) el 22/11/2022 18:10:26
Sobre el primer ejercicio.

Podemos leer la secuencia en un String donde cada valor está separado por un espacio en blanco.

Luego de ese String podemos obtener cada número por separado con el método split(" ") para que separe por los espacios en blanco.
Y ahora ya podemos convertirlos a int, sumarlos y comprobar si la suma es divisible por el último.

Toda esta comprobación, conviene hacerla en un método a parte que sea de tipo boolean.
Revisa este código y pregunta si algo no lo entiendes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class SecuenciaCuriosa {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
 
		System.out.println("\t\tSecuencias curiosas(SC)\n");
		System.out.println("Introduce una secuencia de numeros enteros separados con espacios. Usa 0 para cerrarla.");
		String secuencia = teclado.nextLine();
		teclado.close();
 
		System.out.println(esUnaSC(secuencia)?"\nSi es una SC":"No es una SC");
	}
 
	public static boolean esUnaSC(String secuencia) {
		//Comprobamos si cierra con 0
		if (!secuencia.endsWith("0"))
			return false;
 
		//Separamos los números de la secuencia y comprobamos longitud
		String[] numeros = secuencia.split(" ");
		if (numeros.length < 3)
			return false;
 
		//Los sumamos, controlando la posibilidad de que alguno no sea un número
		try {
			int suma = 0;
			for (String n: numeros)
				suma += Integer.parseInt(n);
			//Comprobamos si la suma es divisible o no por el último valor
			int ultimo = Integer.parseInt(numeros[numeros.length - 2]);
			return suma % ultimo == 0;
 
		}catch(Exception ex) {
			return false;
		}
	}
 
}

¿Y por qué interesaba escribirlo en un método?
Porque ahora podemos reutilizar ese método para el segundo ejercicio.

En el segundo ejercicio podemos pedir secuencias y almacenarlas en un ArrayList de tipo String.
Al terminar (usuario introduce -1 ) recorremos ese array llamando al método que hemos escrito antes en la otra clase y que nos compruebe si son secuencias curiosas.
Cada SC confirmada, aumentaremos un contador.
Si encontramos una sola secuencia que no es SC, pondremos valor false a un boolean para luego saber que mensaje hemos de dar en pantalla.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class FraseMulticuriosa {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
		String secuencia = "";
		ArrayList<String> secuencias = new ArrayList<String>();
 
		System.out.println("\t\tFrase Multicuriosas(FM)\n");
		System.out.println("Proporcione varias secuencias de enteros. Introduzca -1 para terminar");
 
		//Pedimos secuencias
		while (!secuencia.equals("-1")) {
			System.out.print("Secuencia: ");
			secuencia = teclado.nextLine();
			if (!secuencia.equals("-1"))
				secuencias.add(secuencia);
		}
		teclado.close();
 
		//Analizamos
		int contador = 0;
		boolean esFM = true;
		for (String sec: secuencias) {
			if (SecuenciaCuriosa.esUnaSC(sec))
				contador++;
			else
				esFM = false;
		}
 
		//Resultado
		System.out.println(esFM?"Es una FM compuesta por " + contador + " SC":"No es una FM");
	}
 
}


Para el tercer ejercicio, ahora no dispongo de tiempo.
A ver si luego puedo echarte una mano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

No se resolver estos ejercicios

Publicado por Alba (2 intervenciones) el 22/11/2022 18:12:38
muchísimas gracias por la ayuda, de verdad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar