Está en la página 1de 10

Tarea para PROG04.

Detalles de la tarea de esta unidad.


Enunciado.
Para afianzar los conocimientos en el uso de estructuras de control de flujo así como de
excepciones, vamos a realizar una serie de programas. Se deberá crear un proyecto en Netbeans
diferente para cada uno de los ejercicios propuestos, cuyo nombre será PROG04_EjercX,
donde X es el número de ejercicio. Cada proyecto incluirá una sola clase que contendrá un
método main. El alumno decidirá si incluir todo el código en el método main o dividirlo en
diferentes métodos.

Ejercicio 1: Implementar un programa que muestre la tabla de multiplicar de un número leido


desde teclado utilizando al menos tres bucles diferentes. El número leído desde teclado debe ser
menor que 30. En caso contrario se mostrará un mensaje por pantalla y el programa finalizará.

package com.mycompany.prog04_ejerc1;
import java.util.Scanner;
/**
* Este programa calcula la tabla de multiplicar de un número a través de varios métodos.
* Para ello solicita un número y un método.
*
* @authorpa Diego
*/
public class PROG04_Ejerc1 {

public static void main(String[] args) {

//declaración de variables
Scanner teclado = new Scanner (System.in);
int num, i;
String metodo;

//Obtención del número y comprobación de su valor


System.out.println("Introducir número menor de 30");
num = (int) teclado.nextLong();
if(num >=30){
System.out.println("El número no es menor de 30");
return;
}
//Obtención del método y comprobación de su existencia
System.out.println("Introduce el método que prefieras para el cálculo: for, while, do/while:");
metodo = teclado.next();
if(!metodo.equalsIgnoreCase("for") && !metodo.equalsIgnoreCase("while") &&
!metodo.equalsIgnoreCase("do/while")){
System.out.println("método incorrecto");
return;
}

switch(metodo) {
case "for":
System.out.println("método for");

for (i = 1; i <= 10; i++)


System.out.println(num + " x " + i + " = " + num * i);
break;
case "while":
System.out.println("método while");
i = 1;

while(i<=10){
System.out.println(num + " x " + i + " = " + num * i);
i++;
}
break;
case "do/while":
System.out.println("método do/while");
i = 1;

do{
System.out.println(num + " x " + i + " = " + num * i);
i++;
}
while (i<=10);
break;
}
}
}
Ejercicio 2: Un número es primo si solo tiene dos divisores: el 1 y el propio número. Implementa un
programa Java que pida por teclado 5 números. Para cada uno de ellos:
Comprueba si es negativo. En caso afirmativo, muestra el mensaje por pantalla "El número es
negativo".
Si es positivo, deberá mostrar por pantalla si es primo o no.
Procesados los 5 números, el programa finaliza.

package com.mycompany.prog04_ejerc2;
import java.util.Scanner;

/**
* Programa que pide 5 números, y comprueba si alguno de ellos es primo.
* Además avisa cuando uno de ellos es negativo.
*
* @author Diego
*/
public class PROG04_Ejerc2 {

public static void main(String[] args) {

//declaración de variables
Scanner teclado = new Scanner (System.in);
int[] num = {0,0,0,0,0};
int i, j;
boolean noPrimo[] = {true, true, true, true, true};

//Obtención de los números


for (i = 0; i <= 4; i++){
System.out.println("Introducir número " + (i + 1));
num[i] = teclado.nextInt();
}
//Detección de los números negativos
for (i = 0; i <= 4; i++){
if(num[i] < 0)
System.out.println("¡El número " + num[i] + " es negativo!");
}
//Cálculo de los números primos
for (i = 0; i <= 4; i++){
if (num[i] < 2){
noPrimo[i] = false;
continue;
}
for (j = 2; j < num[i]; j++){
if(num[i] % j == 0){
noPrimo[i] = false;
};
}
}
// Impresión de los números primos
for (i = 0; i <= 4; i++){
if (noPrimo[i] == true){
System.out.println("El número " + num[i] + " es primo.");
}
}
}
}
Ejercicio 3: El Mínimo Común Múltiplo (MCM) de un conjunto de dos números es el número
positivo más pequeño que es múltiplo de los dos números. Es posible calcular el MCM de tres o más
números. Por ejemplo, el MCM (2,3) es 6. El 6 es el múltiplo mas pequeño de 2 y de 3. Implementa
un programa Java que pida dos números por teclado, compruebe que son positivos y calcule su
MCM. En caso de no ser ambos números positivos, el programa mostrará un mensaje por pantalla y
finalizará.

package com.mycompany.prog04_ejerc3;
import java.util.Scanner;

/**
* Este programa calcula el Mínimo Común Múltiplo de dos números introducidos por el usuario
* Dentro del código, hay dos posibilidades de cálculo:
* Calculándolo a partir del cálculo del Máximo Común Divisor
* Oculta tras comentarios, iterando positivamente probando todos los números hasta que sea múltiplo de
ambos a la vez
*
* @author Diego
*/
public class PROG04_Ejerc3 {
public static void main(String[] args) {

// Declaración de variables
Scanner teclado = new Scanner (System.in);
int num1, num2, mcm, i, aux1, aux2, mcd;
mcm = 0;
// Introducción de los valores
System.out.println("Introduzca dos números para calcular su mínimo común múltiplo:");
num1 = teclado.nextInt();
num2 = teclado.nextInt();

// Calcular los primos


aux1 = Math.max(num1, num2);
aux2 = Math.min(num1,num2);
do{
mcd = aux2;
aux2 = aux1 % aux2;
aux1 = mcd;
} while (aux2 != 0);
mcm = Math.max(num1, num2) / mcd * Math.min(num1, num2);
/*
for (i = (Math.max(num1, num2)+1); i != mcm ; i++){
if( i % num1 == 0 && i % num2 == 0){
mcm = i;
break;
}
}*/
if (mcm == 0)
System.out.println("El mínimo común múltiplo es demasiado grande");
else
System.out.println("El mínimo común múltiplo es " + mcm);
}
}
Ejercicio 4: Deseamos implementar un juego en Java que permita al usuario adivinar un número
oculto (que será aleatorio). El funcionamiento será el siguiente:
• El programa mostrará un pequeño menú en pantalla con las siguientes opciones (1.
Configurar, 2. Jugar, 3. Salir).
o Si el usuario selecciona la primera opción, se le solicitará por teclado el número de
intentos permitidos (numInt) y el número máximo (numMax) generado.
▪ Si el usuario selecciona la opción 2, el programa generará un número aleatorio entre 0
y numMax que será el número a adivinar (numOculto). A partir de este momento, se le
solicitarán al usuario números hasta adivinar el número oculto.
▪ Si el usuario adivina el número, se mostrará un mensaje "Has ganado!. Has necesitado X
intentos".
▪ Si se consume el número de intentos sin adivinar el número, se mostrará el mensaje
"Perdiste!. Intentos consumidos".
▪ En cada intento, si el usuario no adivina el número se le proporcionará una pista, por
ejemplo, "El número oculto es menor".
▪ En ambos casos, la siguiente acción será mostrar el menú.
▪ Si el usuario selecciona Jugar sin configurar previamente el número de intentos y el
número máximo generado, se tomarán como valores por defecto: numInt=5 y
numMax=10.
o Si el usuario pulsa la opción 3, el programa finaliza.
• Para generar un número aleatorio en java puedes utilizar el siguiente código:
int numOculto = (int)Math.floor(Math.random()*20+1); //genera un número
aleatorio entre 0 y 20, ambos incluidos.
package com.mycompany.prog04_ejerc4;
import java.util.InputMismatchException;
import java.util.Scanner;
/**
* Este Programa es un juego que consiste en adivinar un número
* Hay un menú con 3 opciones: Configurar, Jugar, o Salir
* En Configurar se pueden elegir el número de intentos o el rango máximo para seleccionar el número al azar
*
*/ * @author Diego
*/
public class PROG04_ejerc4 {

public static void main(String[] args) {


// Introducción de variables y presentación
Scanner teclado = new Scanner (System.in);
int select = 0, numero, intento, i;
int maxIntentos = 3;
int maximo = 10;
boolean fin = false;
System.out.println("Bienvenido al juego");
System.out.println("+++++++++++++++++++++++++");
System.out.println("+++ ADIVINA EL NÚMERO +++");
System.out.println("+++++++++++++++++++++++++");
// Comienzo del programa mostrando el menú
do {
System.out.println("\nMENÚ - Selección");
System.out.println("1. Configurar");
System.out.println("2. Jugar");
System.out.println("3. Salir");
try{
select = Integer.valueOf(teclado.nextInt());
}catch(InputMismatchException e){
System.out.println("#ERROR# - Debes introducir un número del 1 al 3");
return;
}
switch (select){
case 1: // Caso Configurar
System.out.println("\nConfiguración");
System.out.println("Introduzca número de intentos permitidos :");
maxIntentos = teclado.nextInt();
System.out.println("Introduzca el número máximo del número aleatorio :");
maximo = teclado.nextInt();
break;
case 2: // Caso Jugar
numero = (int) ((Math.random() * maximo) + 1) ;
System.out.println("Número aleatorio generado entre el 1 y el " + maximo + "\n¿cuál
crees que es?\nTienes " + maxIntentos + " intentos");
for ( i = maxIntentos; i > 0; i--){
intento = teclado.nextInt();
if (intento == numero){
System.out.println("¡EXACTO! ¡HAS GANADO!");
break;}
else if (i > 1)
System.out.print("¡NOOO! Has fallado, y te quedan " + (i - 1) + " intento(s),
prueba otra vez :\n");
else
System.out.print("No lo has conseguido, era el número " + numero + ", vuelves a
empezar\n");
}
break;
case 3: // Caso salir
System.out.println("Adiós");
fin = true;
return;
default: // Otros
System.out.println("Comando incorrecto");
break;
}
} while (true);
}
}
Ejercicio 5: Cuando dividimos un número entre 0 se genera un valor indeterminado. En cualquier
lenguaje de programación este tipo de operaciones genera un error de ejecución que debe ser
controlado desde el código para evitar malas experiencias al usuario. En Java, cuando se produce
esta operación se genera la excepción ArithmeticException. Queremos implementar un
programa Java que calcule la división de dos números solicitados por teclado (dividendo y divisor).
El programa solicitará números indefinidamente hasta que los dos números solicitados sean -1. Se
debe controlar mediante excepciones que el divisor no sea 0. En caso de serlo, se mostrará un
mensaje por pantalla. También habrá que mostrar por pantalla el número de divisiones calculadas.
Utiliza número enteros para las variables.
IMPORTANTE
• En la cabecera de las clases añade documentación indicando autor y descripción de la clase.
• En la cabecera de cada método añade documentación indicando la funcionalidad que
implementa y el valor que devuelve.
• No será necesario realizar comprobaciones de tipos de datos leídos desde teclado. Por
ejemplo, si vamos a leer un número, no será necesario comprobar que el valor introducido
es un número.

package com.mycompany.prog04_ejerc5;
import java.util.Scanner;

/**
* Este programa se encarga de calcular la división entre dos números
* Para ello solicita primero dividendo y divisor y después procede al cálculo
* En caso de posible fallo al introducir un 0 en el divisor, avisa del cálculo y vuelve a solicitar números
* Además tiene un contador para saber cuántas divisiones se han realizado
*
* @author Diego
*/
public class PROG04_Ejerc5 {

public static void main(String[] args) {

// Declaración de variables
Scanner teclado = new Scanner(System.in);
int dividendo, divisor, divisiones = 0;
double resultado;
boolean fin = false;

System.out.println("Bienvenido al programa de cálculo de divisiones");

do { // Comienzo del programa, solicitando los números de entrada


System.out.println("Introduzca dividendo (para abandonar la aplicación, introduzca -1)");
dividendo = teclado.nextInt();
System.out.println("Introduzca divisor (parabandonar la aplicación, introduzca -1)");
divisor = teclado.nextInt();
if(dividendo == -1 && divisor == -1) // Descripción del final del programa
{System.out.println("Adiós");return;}

try{ //Comienzo del cálculo y de la vigilancia de Excepciones


resultado = dividendo / divisor;
resultado = (double) dividendo / divisor;
divisiones++;
System.out.println("El resultado es = " + resultado);
System.out.println("Número de divisiones realizadas : " + divisiones +"\n");
} catch(ArithmeticException Ari) { //Protocolo en caso de error
System.out.println("\nEL DIVISOR NO DEBE SER 0\n");
}
} while (!fin);
}
}

También podría gustarte