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.
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)); } }
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)); } } } }
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); } }
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"); } } }
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); } }
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"); } } }
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); } }
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"); } } }
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)); } }
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); } }
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"); } }
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); } }
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); } } } }
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); } } } }
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; } } } }
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); } }
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); } }
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); } }
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"); } } }
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); } }