Skip to content

Retos

< volver a actividades

Empaquetar retos

Empaqueta las actividades, dentro de la carpeta ut03, en la carpeta retos.

Las actividades programadas en esta sección Retos no son obligatorias.

Reto 01

Modifica el programa para que, en lugar de hacer un descuento del 8% si la compra es de 100 € o más, aplique una penalización de 2 € si el precio es inferior a 30 €.

import java.util.Scanner;
//Un programa que calcula descuento.

public class Descuento {
  public static final float DESCOMPTE = 8;
  public static final float COMPRA_MIN = 100;

  public static void main(String[] args) {
    Scanner lector = new Scanner(System.in);
    System.out.print("Cuál es el precio del producto, en euros? ");
    float preu = lector.nextFloat();
    lector.nextLine();
    if (preu >= COMPRA_MIN) {
      float descompteFet = preu * DESCOMPTE / 100;
      preu = preu - descompteFet;
      }
    System.out.println("El precio final para pagar es de " + preu + " euros.");
  }
}

Reto 02

Modifica el programa Adivina para que, en lugar de un único valor secreto, haya dos. Para ganar, solo hay que acertar uno de los dos.

La condición lógica que os hará falta ya no se puede resolver con una expresión compuesta por una única comparación. Será más compleja.

import java.util.Scanner;

public class Adivina {

  public static final int VALOR_SECRET = 4;

  public static void main(String[] args) {
    Scanner lector = new Scanner(System.in);
    System.out.println("Comencemos el juego.");
    System.out.print("Adivina el valor entero, entre 0 y 10: ");
    int valorUsuari = lector.nextInt();
    lector.nextLine();
    if (VALOR_SECRET == valorUsuari) {
      System.out.println("Exacto! Era " + VALOR_SECRET + ".");
    } else {
      System.out.println("Te has equivocado!");
    }
    System.out.println("Hemos terminado el juego.");
  }
}

Reto 03

Modifica el ejemplo anterior (Adivina) para que compruebe que el valor que ha introducido el usuario se encuentra dentro del rango de valores correcto (entre 0 y 10).


Reto 04

Aplica el mismo tipo de control sobre los datos de la entrada del ejemplo siguiente al ejercicio del reto 01.

import java.util.Scanner;

public class AdivinaControlErrorsEntrada {

  public static final int VALOR_SECRET = 4;

  public static void main(String[] args) {
    Scanner lector = new Scanner(System.in);
    System.out.println("Comencemos el juego.");
    System.out.print("Adivina el valor entero, entre 0 y 10: ");
    boolean tipusCorrecte = lector.hasNextInt();
    if (tipusCorrecte) {
       //Se ha escrito un entero correctamente. Ya se puede leer.
       int valorUsuari = lector.nextInt();
       lector.nextLine();
       if (VALOR_SECRET == valorUsuari) {
           System.out.println("Exacto! Era " + VALOR_SECRET + ".");
       } else {
           System.out.println("Te has equivocado!");
       }
       System.out.println("Hemos terminado el juego.");
    } else {
       //No se ha escrito un entero.
       System.out.println("El valor introducido no es un entero.");
    }
  }
}

Reto 05

Modifica el ejemplo para que primero pregunte al usuario cuántos caracteres "-" quieres escribir por pantalla, y entonces los escriba.

Cuando pruebes el programa, no introduzcas un número muy alto!

//Un programa que escribe una línea con 100 caracteres ’ − ’.

public class Linea {

  public static void main(String[] args) {
    //Inicializamos un contador
    int i = 0;
    //Ja hemos hecho esto 100 veces
    while (i < 100) {
      System.out.print("−");
      //Lo hemos hecho una vez, sumamos 1 al contador
      i = i + 1;
    }
    //Forzamos un salto de línea
    System.out.println();
  }
}

Reto 06

Un contador tanto puede empezar a contar desde 0 e ir subiendo, como desde el final e ir disminuyendo como una cuenta atrás.

Modifica este programa para que la tabla de multiplicar empiece mostrando el valor para 10 y vaya bajando hasta el 1.

import java.util.Scanner;
public class TablaMultiplicar {

  public static void main(String[] args) {
    Scanner lector = new Scanner(System.in);
    System.out.print("Qué tabla de multiplicar quieres? ");
    int taula = lector.nextInt();
    lector.nextLine();
    int i = 1;
    while (i <= 10) {
       int resultat = taula * i;
       System.out.println(taula + " * " + i + " = " + resultat);
       i = i + 1;
    }
    System.out.println("Esta ha estado la tabla del " + taula);
  }
}

Reto 07

El uso de contadores y acumuladores no es excluyente, sino que puede ser complementario.

Piensa cómo se podrías modificar el programa para calcular el resultado del módulo y la división entera a la vez.

Recuerda que la división entera simplemente sería contar cuántas veces se ha podido restar el divisor.

import java.util.Scanner;

public class Modulo {

  public static void main(String[] args) {
     Scanner lector = new Scanner(System.in);
     System.out.print("Cuál es el dividendo? ");
     int dividend = lector.nextInt();
     lector.nextLine();
     System.out.print("Cual es el divisor? ");
     int divisor = lector.nextInt();
     lector.nextLine();
     while (dividend >= divisor) {
        dividend = dividend - divisor;
         System.out.println("Bucle: por ahora el dividendo vale " + dividend + ".");
     }
     System.out.println("El resultado final es " + dividend + ".");
  }
}

Reto 08

Realiza un programa que vaya pidiendo números hasta que se introduzca un numero negativo y nos diga cuantos números se han introducido, la media de los impares y el mayor de los pares.

El número negativo sólo se utiliza para indicar el final de la introducción de datos pero no se incluye en el cómputo.


Reto 09 TablaMult

Escribe un programa que permita al usuario introducir un número n e imprima la tabla de multiplicar (del 0 al 10) de todos los números entre 1 y n.

Ejemplo: Si el usuario introduce en número 5, el programa imprimiría:

Tabla del 1:
1 por 0, 0
1 por 1, 1
1 por 2, 2
...
1 por 10, 10

Tabla del 2:
2 por 0, 0
2 por 1, 2
....
2 por 10, 20

Tabla del 3:
...

Tabla del 5:
...
5 por 10, 50

Reto 10 Raiz

Se desea calcular la raíz cuadrada real de un número real cualquiera pedido inicialmente al usuario. Como dicha operación no está definida para los números negativos es necesario tratar, de algún modo, dicho posible error sin que el programa detenga su ejecución.

< volver a actividades