Ejercicios de Programación en Java: Soluciones y Código Fuente

Enunciados y Soluciones

A continuación, se presentan una serie de ejercicios de programación en Java, junto con sus respectivas soluciones en código fuente. Cada ejercicio aborda un problema específico y se resuelve utilizando las estructuras de control y la lógica de programación adecuadas.

  1. Mostrar el promedio de una secuencia de N números

    Se solicita al usuario que ingrese la cantidad de números (N) y luego se calcula el promedio de los mismos.

    import java.util.*;
    public class PromedioNf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Ingrese el total de números: ");
            int n = entrada.nextInt();
            int suma = 0;
            for (int i = 1; i <= n; i = i + 1) {
                System.out.print("Número " + i + " : ");
                int x = entrada.nextInt();
                suma = suma + x;
            }
            System.out.println("El promedio es: " + (suma / (double)n));
        }
    }
  2. Calcular las raíces de una ecuación cuadrática

    El usuario ingresa los coeficientes de una ecuación cuadrática (a, b, c) y el programa determina sus raíces, indicando si no es una ecuación cuadrática (a=0) o si no tiene solución real.

    import java.util.*;
    public class Raicesf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("a: ");
            int a = entrada.nextInt();
            System.out.print("b: ");
            int b = entrada.nextInt();
            System.out.print("c: ");
            int c = entrada.nextInt();
            if (a == 0) {
                System.out.println("No es una ecuación cuadrática");
            } else {
                int discriminante = b * b - 4 * a * c;
                if (discriminante < 0) {
                    System.out.println("No hay solución");
                } else if (discriminante == 0) {
                    System.out.println("La solución es: " + (-b / (2.0 * a)));
                } else { 
                    System.out.println("La solución 1 es: " +
                            (-b + Math.sqrt(discriminante)) / (2 * a));
                    System.out.println("La solución 2 es: " +
                            (-b - Math.sqrt(discriminante)) / (2 * a));
                }
            }
        }
    }
  3. Calcular la potencia de x elevado a y

    El usuario ingresa dos números enteros (x, y) y el programa calcula el resultado de xy.

    import java.util.*;
    public class DistanciaPitagoricaf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Ingrese x1: ");
            int x1 = entrada.nextInt();
            System.out.print("Ingrese y1: ");
            int y1 = entrada.nextInt();
            System.out.print("Ingrese x2: ");
            int x2 = entrada.nextInt();
            System.out.print("Ingrese y2: ");
            int y2 = entrada.nextInt();
            double distancia = Math.sqrt(Math.pow((x1 - x2), 2) + Math.pow((y1 - y2), 2));
            System.out.println("La distancia es: " + distancia);
        }
    }
  4. Repetir la letra ‘a’ N veces

    El usuario ingresa un número N y el programa muestra la letra ‘a’ repetida N veces.

    import java.util.*;
    public class NVecesAf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Ingrese el número: ");
            int n = entrada.nextInt();
            for (int i = 1; i <= n; i = i + 1) {
                System.out.print("a");
            }
        }
    }
  5. Encontrar el mayor y el menor de una secuencia de números

    El usuario ingresa una secuencia de números positivos y el programa determina el mayor y el menor de ellos. La secuencia termina con el ingreso del número 0.

    import java.util.*;
    public class MayorMenorf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            int mayor = -100000; 
            int menor = +100000; 
            while (true) {
                System.out.print("Número: ");
                int n = entrada.nextInt();
                if (n == 0) {
                    break;
                }
                mayor = Math.max(mayor, n);
                menor = Math.min(menor, n);
            }
            System.out.println("El mayor es: " + mayor);
            System.out.println("El menor es: " + menor);
        }
    }
  6. Determinar si un número es primo

    El usuario ingresa un número y el programa indica si es primo o no.

    import java.util.*;
    public class Primof {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Ingrese el número: ");
            int n = entrada.nextInt();
            boolean esPrimo = true;
            for (int i = 2; i < n; i = i + 1) {
                if (n % i == 0) {
                    esPrimo = false;
                }
            }
            if (esPrimo) {
                System.out.println(n + " es primo");
            } else {
                System.out.println(n + " no es primo");
            }
        }
    }
  7. Calcular el factorial de un número

    El usuario ingresa un número y el programa calcula su factorial.

    import java.util.*;
    public class Factorialf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Número: ");
            int n = entrada.nextInt();
            int f = 1;
            for (int c = 1; c <= n; c = c + 1) {
                f = f * c;
            }
            System.out.println("El factorial de " + n + " es " + f);
        }
    }
  8. Determinar si un número es perfecto

    El usuario ingresa un número y el programa indica si es perfecto o no. Un número es perfecto si la suma de sus divisores propios es igual al número.

    import java.util.*;
    public class Perfectof {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Ingrese un número: ");
            int n = entrada.nextInt();
            int sumaDivisoresPropios = 0;
            for (int i = 1; i < n; i = i + 1) {
                if (n % i == 0) {
                    sumaDivisoresPropios = sumaDivisoresPropios + i;
                }
            }
            if (sumaDivisoresPropios == n) {
                System.out.println(n + " es perfecto");
            } else {
                System.out.println(n + " no es perfecto");
            }
        }
    }
  9. Mostrar el promedio de una secuencia de números (termina con 0)

    El usuario ingresa una secuencia de números y el programa calcula el promedio de los mismos. La secuencia termina con el ingreso del número 0.

    import java.util.*;
    public class Promediof {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            int suma = 0;
            int cantidad = 0;
            while (true) {
                System.out.print("Número: ");
                int n = entrada.nextInt();
                if (n == 0) {
                    break;
                }
                suma = suma + n;
                cantidad = cantidad + 1;
            }
            System.out.println("El promedio es: " + (suma / (double)cantidad));
        }
    }
  10. Calcular la potencia de x elevado a y (reimplementado)

    El usuario ingresa dos números enteros (x, y) y el programa calcula el resultado de xy.

    import java.util.*;
    public class Potenciaf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("x: ");
            int x = entrada.nextInt();
            System.out.print("y: ");
            int y = entrada.nextInt();
            int resultado = 1;
            for (int i = 1; i <= y; ++i) {
                resultado = resultado * x;
            }
            System.out.println("Resultado: " + resultado);
        }
    }
  11. Contar la cantidad de dígitos de un número

    El usuario ingresa un número y el programa cuenta la cantidad de dígitos que tiene.

    import java.util.*;
    public class CantidadDigitosf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Ingrese un número: ");
            int n = entrada.nextInt();
            int contador = 0;
            while (n != 0) {
                n = n / 10;
                contador = contador + 1;
            }
            System.out.println("El número tiene " + contador + " dígitos");
        }
    }
  12. Obtener el dígito i-ésimo de un número

    El usuario ingresa un número y la posición de un dígito (de derecha a izquierda), y el programa muestra el dígito correspondiente.

    import java.util.*;
    public class Digitof {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Ingrese un número: ");
            int n = entrada.nextInt();
            System.out.print("Cuál dígito desea: ");
            int posicion = entrada.nextInt();
            int contador = 0;
            int digito = -1;
            while (contador < posicion) {
                digito = n % 10;
                n = n / 10;
                contador = contador + 1;
            }
            System.out.println("Dígito: " + digito);
        }
    }
  13. Mostrar los números perfectos menores que un número dado

    El usuario ingresa un número y el programa muestra todos los números perfectos menores que él.

    import java.util.*;
    public class NPerfectosf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Ingrese un número: ");
            int n = entrada.nextInt();
            for (int numero = 2; numero <= n; numero = numero + 1) {
                int sumaDivisoresPropios = 0;
                for (int j = 1; j < numero; j = j + 1) {
                    if (numero % j == 0) {
                        sumaDivisoresPropios = sumaDivisoresPropios + j;
                    }
                }
                if (sumaDivisoresPropios == numero) {
                    System.out.println(numero);
                }
            }
        }
    }
  14. Mostrar todos los números primos menores o iguales a N

    El usuario ingresa un número N y el programa muestra todos los números primos menores o iguales a N.

    import java.util.*;
    public class PrimosHastaNf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Ingrese el número: ");
            int n = entrada.nextInt();
            System.out.println("Lista de números primos: ");
            for (int i = 2; i < n; i = i + 1) {
                boolean esPrimo = true;
                for (int j = 2; j < i; j = j + 1) {
                    if (i % j == 0) {
                        esPrimo = false;
                    }
                }
                if (esPrimo) {
                    System.out.println(i);
                }
            }
        }
    }
  15. Mostrar los primeros N números primos

    El usuario ingresa un número N y el programa muestra los primeros N números primos.

    import java.util.*;
    public class NPrimosf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Ingrese el número: ");
            int n = entrada.nextInt();
            System.out.println("Lista de primeros " + n + " números primos: ");
            int contador = 1;
            for (int i = 2; contador <= n; i = i + 1) {
                boolean esPrimo = true;
                for (int j = 2; j < i; j = j + 1) {
                    if (i % j == 0) {
                        esPrimo = false;
                    }
                }
                if (esPrimo) {
                    System.out.println(i);
                    contador = contador + 1;
                }
            }
        }
    }
  16. Encontrar el mayor y el segundo mayor de una secuencia de números (termina con 0)

    El usuario ingresa una secuencia de números y el programa determina el mayor y el segundo mayor de ellos. La secuencia termina con el ingreso del número 0.

    import java.util.*;
    public class DosMayoresf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            int primerMayor = -100000; 
            int segundoMayor = -100000; 
            while (true) {
                System.out.print("Número: ");
                int n = entrada.nextInt();
                if (n == 0) {
                    break;
                }
                if (n > primerMayor) {
                    segundoMayor = primerMayor;
                    primerMayor = n;
                } else if (n > segundoMayor) {
                    segundoMayor = n;
                }
            }
            System.out.println("El 1er mayor es: " + primerMayor);
            System.out.println("El 2do mayor es: " + segundoMayor);
        }
    }
  17. Encontrar el mayor y el segundo mayor de una secuencia de N números

    El usuario ingresa una cantidad N de números y el programa determina el mayor y el segundo mayor de ellos.

    import java.util.*;
    public class DosMayoresNf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.println("Cuántos números desea ingresar: ");
            int primerMayor = 0, segundoMayor = 0;
            int n = entrada.nextInt();
            int numero;
            int i;
            for (i = 0; i <= n; i = i + 1) {
                System.out.print("Número: ");
                numero = entrada.nextInt();
                if (i == 0) {
                    primerMayor = numero;
                    segundoMayor = numero;
                }
                if (numero > primerMayor) {
                    segundoMayor = primerMayor;
                    primerMayor = numero;
                }
                if (numero > segundoMayor && numero < primerMayor) {
                    segundoMayor = numero;
                }
            }
            System.out.println("El 1er mayor es: " + primerMayor);
            System.out.println("El 2do mayor es: " + segundoMayor);
        }
    }
  18. Encontrar el mayor, el segundo mayor y el tercer mayor de una secuencia de números (termina con 0)

    El usuario ingresa una secuencia de números y el programa determina el mayor, el segundo mayor y el tercer mayor de ellos. La secuencia termina con el ingreso del número 0.

    import java.util.*;
    public class TresMayoresf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            int primerMayor = -100000; 
            int segundoMayor = -100000; 
            int tercerMayor = -100000; 
            while (true) {
                System.out.print("Número: ");
                int n = entrada.nextInt();
                if (n == 0) {
                    break;
                }
                if (n > primerMayor) {
                    tercerMayor = segundoMayor;
                    segundoMayor = primerMayor;
                    primerMayor = n;
                } else if (n > segundoMayor) {
                    tercerMayor = segundoMayor;
                    segundoMayor = n;
                } else if (n > tercerMayor) {
                    tercerMayor = n;
                }
            }
            System.out.println("El 1er mayor es: " + primerMayor);
            System.out.println("El 2do mayor es: " + segundoMayor);
            System.out.println("El 3er mayor es: " + tercerMayor);
        }
    }
  19. Determinar si dos números son amigos

    El usuario ingresa dos números y el programa determina si son amigos o no. Dos números son amigos si la suma de los divisores propios del primero es igual al segundo y viceversa.

    import java.util.*;
    public class Amigosf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Primer número: ");
            int a = entrada.nextInt();
            System.out.print("Segundo número: ");
            int b = entrada.nextInt();
            int sumaDivisoresPropiosA = 0;
            for (int i = 1; i < a; i = i + 1) {
                if (a % i == 0) {
                    sumaDivisoresPropiosA = sumaDivisoresPropiosA + i;
                }
            }
            int sumaDivisoresPropiosB = 0;
            for (int i = 1; i < b; i = i + 1) {
                if (b % i == 0) {
                    sumaDivisoresPropiosB = sumaDivisoresPropiosB + i;
                }
            }
            if (a == sumaDivisoresPropiosB && b == sumaDivisoresPropiosA) {
                System.out.println(a + " y " + b + " son amigos");
            } else {
                System.out.println(a + " y " + b + " no son amigos");
            }
        }
    }
  20. Mostrar la descomposición primal de un número

    El usuario ingresa un número y el programa muestra su descomposición en factores primos.

    import java.util.Scanner;
    public class DescomposicionPrimalf {
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            System.out.print("Número: ");
            int n = entrada.nextInt();
            for (int i = 2; i < n; ++i) {
                if (n % i == 0) {
                    System.out.print(i + "*");
                    n = n / i; 
                    i = i - 1; 
                }
            }
            System.out.println(n);
        }
    }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.