Ejercicios resueltos de Java: suma de dígitos, Fibonacci, MCD y cambio de base

Informática y Telecomunicaciones3,26 KB

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 SumarCirculos

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

Descargar

PDF Word HTML