Java Ejercicios Básicos Resueltos 3

Ejercicios básicos Java con estructura secuencial

Relación Nº 3: Ejercicios 8, 9 y 10

Ejercicio 8:
Programa que tome como dato de entrada un número que corresponde a la longitud del radio una esfera y nos calcula y escribe el volumen de la esfera que se corresponden con dicho radio.

La fórmula para calcular el volumen de la esfera es
v = (4/3)*PI*r^3

/* 
 * Programa que calcula el volumen de una esfera
 */
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        double radio, volumen;
        System.out.print("Introduzca radio de la esfera: ");
        radio = sc.nextDouble();
        System.out.println("Volumen de la esfera de radio " + radio + " = " + (4.0/3)* Math.PI * Math.pow(radio, 3));  
    }
}
La operación para calcular el volumen es: (4.0/3)* Math.PI * Math.pow(radio, 3))

Debemos tener cuidado con la división entre números enteros. Si hacemos 4/3 nos da como resultado 1, por eso se debe escribir al menos uno de los dos números como double. En este caso se ha puesto el numerador como double simplemente escribiendo 4.0 y de esta forma el resultado de la división 4.0/3 será de tipo double.

Ejercicio 9:
Programa Java que calcule el área de un triángulo en función de las longitudes de sus lados (a, b, c), según la siguiente fórmula:  
Area = RaizCuadrada(p*(p-a)*(p-b)*(p-c))
donde p =  (a+b+c)/2
Para calcular la raíz cuadrada se utiliza el método Math.sqrt() 

/* 
 * Programa que calcule el área de un triángulo en función de las longitudes de sus lados (a, b, c)                    
 * según la siguiente fórmula: area=raiz2(p(p-a)(p-b)(p-c)) donde p = (a+b+c)/2
 */
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        double a,b,c,p;

        System.out.print("Introduzca longitud del primer lado del triángulo: ");
        a = sc.nextDouble();

        System.out.print("Introduzca longitud del segundo lado del triángulo: ");
        b = sc.nextDouble();

        System.out.print("Introduzca longitud del tercer lado del triángulo: ");
        c = sc.nextDouble();

        p = (a+b+c)/2;
        
        System.out.println("Area -> " +  Math.sqrt(p*(p-a)*(p-b)*(p-c)));
    }
}

Ejercicio 10:
Programa Java que lea un número entero de 3 cifras y muestre por separado las cifras del número.

/*
 * Programa que lea un número de 3 cifras y muestre por pantalla las cifras del número                                 
 */
import java.util.Scanner;

public class Main{

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int N;

        System.out.print("Introduzca valor de N: ");
        N = sc.nextInt(); //supondremos que el número introducido tiene 3 cifras
        
        System.out.println("Primera cifra de " + N + " -> " + (N/100));
        System.out.println("Cifra central de " + N + " -> " + (N/10)%10);
        System.out.println("Última cifra  de " + N + " -> " + (N%10));
        
    }  
}

Recuerda que la división entre enteros da como resultado la parte entera de la división (sin decimales). Si por ejemplo N = 123 la operación N/10 da como resultado 12 y no 12.3 
Recuerda que el operador % obtiene el resto de la división.

42 comentarios:

  1. Buenas, primero darte las gracias por publicar estos ejercicios. Me están siendo de gran ayuda.

    Ahora tengo una duda en el ejercicio número 9. Primero lo he hecho sin mirar el resultado y no me ha salido, al introducir las longitudes "a,b,c" con valor de "1,2,3" el resultado de área me da "0.0".

    He probado con otros valores y no me ha sacado el área en ninguna de ellas. Al copiar y pegar tu código ha pasado exactamente lo mismo. ¿Sabes por qué puede ser ésto?

    Muchas gracias de nuevo por todo el curro voluntario.

    ResponderEliminar
    Respuestas
    1. Hola, gracias a ti por seguir el blog. Me alegro de que te estén sirviendo los ejercicios. Poco a poco iré poniendo más y algo más avanzados.
      Respecto a la duda que planteas, si los valores son 1, 2, 3 entonces p = (1 + 2 + 3)/2 = 3
      y al calcular Math.sqrt(3*(3-1)*(3-2)*(3-3)) obtenenos como valor 0. (3-3)
      En general habrá que utilizar valores que correspondan a un triángulo real. Habrá valores como por ejemplo a = 10 b = 1 c = 2 para los que no obtendremos un área válida y que no pueden ser longitudes de lado de un triángulo real.

      Saludos

      Eliminar
    2. Eso lo resuelves de una manera muy simples, diciendo que se repita la pregunta de los lados hasta que la suma de los dos menores sea mayor al tercer lado del triángulo. Un saludo.

      Eliminar
  2. Gracias por tu respuesta ENRIQUE saludos de mexico hgo

    ResponderEliminar
  3. por que sale 4/3 no entiendo???

    ResponderEliminar
  4. si un poco complicado de entenderlo pero en me a ayudado
    un poco

    ResponderEliminar
  5. les paso este mismo ejemplo pero aqui les dice que si no es de 3 cifras que vuelva a introducir un numero de 3 crifras
    //////////////////////////
    package practicando12;
    import java.util.Scanner;
    public class practicando12
    {
    public static void main(String[]args)
    {
    int opc=0;
    //int resp;
    while (opc==0)
    {
    Scanner num=new Scanner(System.in);
    System.out.println("Ingrese un numero entero de 3 cifras:");
    int n=num.nextInt();


    if (n>=100 && n<=999)
    {
    opc=1;
    int resultado=n/100;
    int resultado2=n%100;
    int resultado3=(resultado2/10);
    int resultado4=resultado2%10;
    //System.out.println("el numero no debe ser menor a 100 ni mayor a 999");
    System.out.println("la primer cifra es: "+resultado);
    System.out.println("la 2da cifra es: "+resultado3);
    System.out.println("la 3 cifra es: "+resultado4);
    }
    else

    {
    opc=0;

    }
    }
    }
    }

    ResponderEliminar
    Respuestas
    1. Hola disculpen nesesito hacer un programa en Java q lleve
      nombre,
      apellido,
      salario nominal,
      Ibas(4.85%)
      isr(5%)
      iva (12%)
      y salario total
      para 50 arreglos Con una pantalla de opciones q diga
      ingresar código,
      nombre,
      apellido
      salarios nominal
      en esa pantalla tiene q llevar botones de reporte, nuevo, sigue, anterior, guardar, salir

      Eliminar
  6. hola me podeis ayudar con este ejercicio por favor
    calcular la hora un segundo despues de una hora dada por teclado (resolucion mediante composicion condicional y tambien mediante composicion secuencial) muchas gracias

    ResponderEliminar
  7. Acá otra versión, solo acepta números de tres (3) cifras:

    import java.util.Scanner;


    public class Secuencial10 {

    public static void main(String[] args) {
    //Inicialización de variables
    int numero;
    Scanner sc = new Scanner (System.in);

    //Código
    do {
    System.out.print("Por favor ingrese el número: ");
    numero = sc.nextInt();
    } while (numero < 100 || numero > 999);
    sc.close();
    System.out.println("Centenas: " + numero/100);
    System.out.println("Decenas: " + (numero/10)%10);
    System.out.println("Unidades: " + (numero%100)%10);

    ResponderEliminar
  8. aca tengo otra forma sin utilizar while ni for
    import java.util.Scanner;

    public class P4 {
    public static void main(String[] args) {
    System.out.println("ingrese un numero de 3 cifras : ");
    Scanner numero = new Scanner(System.in);
    int n = numero.nextInt();
    int u,d,c;
    if(n>99 && n<1000){
    u = n%10;
    n = n/10;
    d = n%10;
    n = n/10;
    c = n;
    System.out.println("unidad = "+u + " decena = "+d + " centena = "+c);
    }
    else
    System.out.println("Error ");
    }

    }

    ResponderEliminar
  9. disculpen me puede ayudar con algún algoritmo que haga un programa que calcule área,perimetros y volúmenes de figuras de 2 y 3 planos o dimensiones xfa

    ResponderEliminar
  10. Bastante interesantes los ejercicios. Te felicito por la ayuda que proporcionas.
    Estuve corriendo el ejercicio 8 con Eclipse y me indica que la variable volumen no se utiliza por lo que la puedo retirar del programa.
    Eduardo Ponce
    Lima Peru

    ResponderEliminar
    Respuestas
    1. Es cierto Eduardo, la variable volumen se puede quitar ya que el volumen se calcula y se muestra directamente.

      Eliminar
  11. Estoy trabajando con Eclipse y me pide en todos los ejercicios que trabajan con System.out.print, cerrar la impresora, por lo que averiguando coloque la sentencia sc.close() al final.

    ResponderEliminar
    Respuestas
    1. No se exactamente a que te refieres con cerrar la impresora. la sentencia sc.close() cierra el Scanner aunque esto no es necesario hacerlo en el programa ya que la Máquina Virtual de Java cierra automáticamente el Scanner cuando acaba la ejecución.

      Eliminar
  12. Exelentes programas, me ayudaron muchisimo!!!
    Gracias Suerte

    ResponderEliminar
    Respuestas
    1. me alegro de que te hayan sido útiles mishel. Saludos xd

      Eliminar
  13. me podrían ayudar con este problema??
    Crear un ´programa que encargue por teclado el nombre de una persona edad dirección estado civil si es soltero le mostrara un saludo y si es casado le mostrara una despedida

    ResponderEliminar
  14. public void mostrarDiez(){
    //Programa Java que lea un número entero de 3 cifras y muestre por separado las cifras del número.

    int numero=506;


    for(int i=0;i<String.valueOf(numero).length();i++){

    System.out.print(String.valueOf(numero).charAt(i) + " ");
    }

    imprime 5 0 6 por consola

    ResponderEliminar
  15. Hola disculpen nesesito hacer un programa en Java q lleve
    nombre,
    apellido,
    salario nominal,
    Ibas(4.85%)
    isr(5%)
    iva (12%)
    y salario total
    para 50 arreglos Con una pantalla de opciones q diga
    ingresar código,
    nombre,
    apellido
    salarios nominal
    en esa pantalla tiene q llevar botones de reporte, nuevo, sigue, anterior, guardar, salir

    ResponderEliminar
  16. Buena tarde, una pregunta el ejercicio 8, yo lo hice de esta forma

    import java.util.*;
    public class Ejercicio8{
    public static void main(String[] args){
    double v, r;
    Scanner sc = new Scanner(System.in);
    System.out.println("Ingrese numero de radio: ");
    r = sc.nextDouble();
    v = (4.0/3)*Math.PI*Math.pow(r,3);
    System.out.println("El volumen de la esfera es: " + v);
    }
    }

    Estara bueno de esta manera tambien, pues a mi me da. Gracias me han servido mucho este blogs

    ResponderEliminar
    Respuestas
    1. Hola Javier, esta solución también es correcta. Guardas el resultado de calcular el volumen en una variable y después se muestra la variable. En el ejercicio 8 el resultado del cálculo no se guarda y se muestra directamente. Ambos son correctos. Saludos y gracias por el comentario.

      Eliminar
  17. ingresar 3 numero y hayar cual es el mayor y cual es el menor pero por herencia alguien sabe por que ya me olvide solo ayudad

    ResponderEliminar
  18. Alguien que me pueda ayudar con java eclipse estoy perdida la verdad no logro entender !!!!!!!! :CC

    ResponderEliminar
  19. buenas, en el ejercicio 8 crean la variable volumen pero no la usan

    ResponderEliminar
  20. - Un restaurante ofrece un descuento del 10% para consumos de hasta S/.100.00,
    un descuento de 20% para consumos de hasta S/.500 y un descuento de 30% para
    consumos mayores. Para todos los casos se aplica un impuesto del 19%.
    Determinar el monto del descuento, el impuesto, el importe a pagar y la persona
    que realizo el consumo.

    ResponderEliminar
  21. Ingresado el carácter desarrollar: Si el carácter ingresado es (C), Convertir
    una cantidad de segundos en horas, minutos y segundos. Y si el carácter
    ingresado es (N), determinar cuántos números enteros están incluidos en ellos.

    ResponderEliminar
  22. import java.util.*;
    public class CRC {
    public static void main(String[]args){
    Scanner leer = new Scanner(System.in);
    int num,mod,cont=0,i;
    int V[] = new int[10];
    num = leer.nextInt();
    while(num>0){
    mod = num%10;
    num = num/10;
    cont++;
    V[cont] = mod;
    }
    for (i=cont;i>0;i--) {
    System.out.print(V[i]+" ");
    }
    System.out.println();
    }
    }

    ResponderEliminar
  23. Pueden ayudarme a resolver este programa en JAVA.

    Se pretende desarrollar un conjunto de clases que representen, de forma simplificada, a una hipotética empresa dedicada a vender un producto. A continuación, se describen las características básicas de estas clases:

    1. Empleado. Clase básica que describe a un empleado. Incluye sus datos personales (nombre, apellidos, DNI, dirección) y algunos datos tales como los años de antigüedad, teléfono de contacto y su salario. Incluye también información de quién es el empleado que lo supervisa (Empleado *). Tendrá, al menos, las siguientes funciones miembro:
    a. Constructores para definir correctamente un empleado, a partir de su nombre, apellidos, DNI, dirección, teléfono y salario.
    b. Imprimir (A través de los operadores de E/S redefinidos)
    c. Cambiar supervisor
    d. Incrementar salario
    2. Secretario. Tiene despacho, número de fax e incrementa su salario un 5% anual. Tendrá, al menos, las siguientes funciones miembro:
    a. Constructores (debe rellenar la información personal y los datos principales)
    b. Imprimir (debe imprimir sus datos personales y su puesto en la empresa).
    3. Vendedor. Tiene coche de la empresa (identificado por la matricula, marca y modelo), teléfono móvil, área de venta, lista de clientes y porcentaje que se lleva de las ventas en concepto de comisiones. Incrementa su salario un 10% anual. Tendrá, al menos, las siguientes funciones miembro:
    a. Constructores (debe rellenar la información personal y los datos principales)
    b. Imprimir (debe imprimir sus datos personales y su puesto en la empresa).
    c. Dar de alta un nuevo cliente.
    d. Dar de baja un cliente.
    e. Cambiar de coche.
    4. Jefe de zona. Tiene despacho, tiene un secretario a su cargo, una lista de vendedores a su cargo y tiene coche de la empresa (identificado por la matrícula,marca y modelo). Incrementa su salario un 20% anual. Tendrá, al menos, las siguientes funciones miembro:
    a. Constructores (debe rellenar la información personal y los datos principales)
    b. Imprimir (debe imprimir sus datos personales y su puesto en la empresa).
    c. Cambiar de secretario.
    d. Cambiar de coche.
    e. Dar de alta y de baja un nuevo vendedor en su zona.

    Todos los empleados son vendedores, jefes de zona o secretarios. Hacer un programa de prueba que muestre como funciona. Probar, especialmente, que el método incrementar salario se comparta bien, según el empleado que sea así es la subida.
    Como actividad final, deberá construir una interfaz que implemente al menos una de las funcionalidades (Secretario, Vendedor o Jefe de zona), el diseño de la interfaz queda a criterio propio.
    cualquier información al correo jjsoid2015@gmail.com

    ResponderEliminar
  24. El Ejercicio 10 que realizo si quiero separar 5 cifras

    ResponderEliminar

  25. Desarrolle un programa que lea dos números decimales, el radio y la altura. En base a estos datos, su programa debe calcular e imprimir el área y el volumen del cilindro redondeado a dos decimales. 
    Aiuda por favor

    ResponderEliminar
  26. Alguien con vida que me ayude con el ejercicio 10 y explique lo del operador "%"

    ResponderEliminar
  27. alguien me puede ayudar formula para calcular el area y volumen de un prisma

    ResponderEliminar
  28. me ayudarian con esto porfavor--(realizar un ejemplo que realice calculo b(n)

    ResponderEliminar
  29. Crear un programa que lea por teclado el nombre de una persona edad, dirección y estado civil, si es soltero le mostrara un saludo y si es casado le mostrara una despedida.

    ResponderEliminar
  30. Estos ejercicios son geniales, es justo lo que andaba buscando, gracias por tu trabajo.

    ResponderEliminar

  31. alguien que me ayude a resolver este trabajo en eclipse


    Diseñe la clase Movil en el paquete semana_03 con los atributos privados: número de móvil (int),
    nombre del cliente (String), segundos consumidos (int) y precio por segundo (double).
    Implemente además:
    - Una variable privada de clase que cuente la cantidad de objetos tipo Movil creados (int).
    - Una variable privada de clase que acumule la suma de todos los importes a pagar (double).
    - Una constante pública de clase para el factor del IGV (double).
    - Un bloque de inicialización static para asignarle a la constante el valor 0.18 e inicializar con
    cero las variables privadas de clase.
    - Un constructor que inicialice a todos los atributos, cuente la cantidad de objetos creados y
    acumule los importes a pagar. Haga uso de la referencia this.
    - Un constructor con dos parámetros que inicialice sólo los atributos número y nombre,
    invocando al primer constructor usando la referencia this, enviando con el valor 75 los
    segundos consumidos y con 0.28 el precio por segundo.
    - Un constructor sin parámetros que invoque al segudo constructor usando la referencia this,
    enviando con 987656789 el número de móvil y con “Juan” el nombre del cliente.
    - Métodos de acceso público set para todos los atributos privados. Use la referencia this.
    - Métodos de acceso público get para todos los atributos privados.
    - Métodos públicos de clase set/get para las variables privadas de clase.
    - Un método que retorne el costo por consumo (segundos * precio).
    - Un método que retorne el impuesto por IGV (aplicado al costo por consumo).
    - Un método que retorne el importe a pagar (costo por consumo + impuesto por IGV).
    En la clase principal, a la pulsación del botón Procesar:
    - Declare, cree e inicialice tres objetos de tipo Movil (con datos fijos) haciendo uso de los tres
    constructores.
    - Invoque a un método listado que reciba (como parámetro) la referencia a un objeto de tipo
    Movil y visualice sus datos completos.
    - Muestre el valor del IGV, la cantidad de objetos creados y la suma de los importes a pagar.

    ResponderEliminar