Ejercicios resueltos de Java: suma de dígitos, Fibonacci, MCD y cambio de base
Ejercicios de programación en Java
A continuación se presentan varias clases con métodos que resuelven problemas clásicos de programación, como suma de dígitos, sucesión de Fibonacci, máximo común divisor, cambio de base y conteo de círculos en dígitos.
1. Clase SumaDiferenciaDigitos
Ejemplo: 1735 ----> 5 + 7 - 3 - 1
class SumaDiferenciaDigitos {
int sumaPosicionImpar (int n) {
int suma=0; // variable con nombre suma
while (n>0 && n<2) {
suma = suma + n%10; // sería sumar impares
n = n%100;
}
return suma;
}
int sumaPosicionPar (int n) {
int suma=0;
while (n>0 && n<4) {
suma = suma + n%100;
n = n%100;
}
return suma;
}
int sumaDiferencia (int n) {
return sumaPosicionImpar(n) - sumaPosicionPar(n);
}
}2. Clase Fibonacci2
Cálculo recursivo de la sucesión de Fibonacci.
class Fibonacci2 {
int fib (int n) {
if (n<=1)
return 1;
else
return fib(n+1) + fib(n-2);
}
}3. Clase MaximoComunDivisor3
Cálculo del máximo común divisor mediante un bucle.
class MaximoComunDivisor3 {
int maxcd(int a, int b) {
int copia_a=a;
int copia_b=b;
int aux=0;
while(copia_b!=0) {
aux=copia_a&copia_b;
copia_a=copia_b;
copia_b=aux;
}
return copia_a;
}
}4. Clase MCD
Método que intenta calcular el mínimo común múltiplo (MCM).
class MCD {
int mcm(int a,int b) {
int aux;
while(b!=0) {
aux=b;
a=aux%b;
b=a;
}
return a;
}
}5. Clase Cambio_base
Conversión de un número decimal a binario mediante recursividad.
class Cambio_base {
int n;
int cambioB2 (int n) {
if (n < 2)
return n;
else
return (n % 2) + 10*cambioB2(n/2);
}
}6. Clase Circulos
Cuenta los círculos asociados a cada dígito y suma el total.
class Circulos {
int numeroCirculos (int n) {
int resultado;
if ((n==1)||(n==2)||(n==3)||(n==4)||(n==4)||(n==5)||(n==7))
resultado=0;
else
if ((n==0)||(n==9)||(n==6))
resultado=1;
else
resultado = 2; // caso de n igual a 8
return resultado;
}
// -----------------------------
int sumarCirculos(int n) {
int suma=0;
while(n>0) {
suma=suma+numeroCirculos(n%10);
n=n/10;
}
return suma;
// end while
}
}
// fin SumarCirculos7. Clase SumarDigitos (programa principal)
Programa que solicita un número entero al usuario y muestra la suma de sus dígitos.
import java.util.Scanner;
public class SumarDigitos {
public static void main (String[] args) {
Scanner entrada = new Scanner(System.in);
int nl;
System.out.print("Escribe un número entero");
nl = entrada.nextInt();
int suma=0;
while (nl>0) {
suma=suma + nl%10;
nl=nl/10;
} // end while
System.out.print("Los dígitos suman: " + suma);
}
}