Anda di halaman 1dari 10

EJERCICIOS DE ALGORITMOS

1. Realice un programa en java que genere los primeros N te rminos de la sucesio n

de Fibonacci {0, 1, 1, 2, 3, 5, 8, 13, 21, }

int fibonacci(int n)

if (n>1){

return fibonacci(n-1) + fibonacci(n-2); //funcio n recursiva

else if (n==1) { // caso base

return 1;

else if (n==0){ // caso base

return 0;

else{ //error

System.out.println("Debes ingresar un taman o mayor o igual a 1");

return -1;

2. Realice un programa en java que genere los primeros N te rminos de la sucesio n


{17, 15, 18, 16, 19, 17, 20, 18, 21, }
import java.util.Scanner;

class Series {

public static void main(String[] args) {


int n,c,p,d;
Scanner lee=new Scanner(System.in);
n=lee.nextInt();
c=1;
p=2;
d=2;
while(c<=n){
if(p%d==0){
if(p==d){
System.out.print(p+",");
c++;
}
d=2;
p++;
}
else
d++;
}
}
}
3. Realice un programa en java que genere los te rminos de la sucesio n, siempre y
cuando la sumatoria de sus te rminos no exceda de 999999. {2, 5, 7, 10, 12, 15,
17 }
4. Realice un programa en java que obtenga la sumatoria de los te rminos de la
sucesio n {17, 15, 18, 16, 19, 17, 20, 18, 21, 1800}
5. Realice un algoritmo (pseudoco digo, java) que dado un nu mero entero N, calcules la suma: 1 #$ + #& #' + *#
6. Un nu mero natural se denomina nu mero perfecto si es precisamente igual a la
suma de todos sus divisores positivos sin incluirse e l mismo. Realice un
programa en java que determine si un entero positivo N es un nu mero perfecto.
Divisores de 6 = {1, 2, 3, 6} y 1+2+3 = 6
Divisores de 28 = {1, 2, 4, 7, 14, 28} y 1+2+4+7+14 = 28
import java.util.Scanner;
public class NumeroPerfecto {
public static void main(String[] args) {
int i, suma = 0, n;
Scanner sc = new Scanner(System.in);
System.out.println("Introduce un nu mero: ");
n = sc.nextInt();
for (i = 1; i < n; i++) { // i son los divisores. Se divide desde 1 hasta n-1
if (n % i == 0) {
suma = suma + i; // si es divisor se suma
}
}
if (suma == n) { // si el numero es igual a la suma de sus divisores es perfecto
System.out.println("Perfecto");
} else {
System.out.println("No es perfecto");

}
}
}

7. Realice un programa en java que, dado un valor x, calcule el valor de la funcio n


/ / 2 / 3 / 4
= 1 + $0! &! + '! 5! + tenga en cuenta so lo los te rminos de la serie que en valor absoluto son
mayores o iguales a 10-3
8. Realice un programa en java que permita determinar si un nu mero entero
positivo N es primo o no.
9. Realice un programa en java que calcule el ma ximo comu n divisor (mcd) de dos
nu mero naturales a y b.
Nota: el mcd de dos enteros no negativos a y b es el mayor entero positivo que
es divisor de a y de b
mcd(48,60)=?
Divisores de 48={1,2,3,4,6,8,12,16,24,48}

Divisores de 60={1,2,3,4,5,6,8,12,15,20,30,60}

public class testRecursivoMCD

public static void main (String[] Args) {

System.out.println("Cua l es el mcd de 4 y

12? Es "+obtener_mcd(4,12));

System.out.println("Cua l es el mcd de 8 y

12? Es "+obtener_mcd(8,12));

System.out.println("Cua l es el mcd de 4 y

17? Es "+obtener_mcd(4,17));
System.out.println("Cua l es el mcd de 96 y

36? Es "+obtener_mcd(96,36));

static int obtener_mcd(int a, int b) {

if(b==0)

return a;

else

return obtener_mcd(b, a % b);

}
10. Realice un programa en java que lea y cuente le nu mero de caracteres digitados

por teclados, terminando el proceso cuando se ingrese el cara cter punto.

import java.util.*;

public class Main {

public static void main(String[] args){

//declaracio n de variables

int n1, n2;

Scanner sc = new Scanner(System.in);

//leer el primer nu mero

System.out.println("Introduce un nu mero entero: ");

n1 = sc.nextInt(); //lee un entero por teclado

//leer el segundo nu mero

System.out.println("Introduce otro nu mero entero: ");

n2 = sc.nextInt(); //lee un entero por teclado

//mostrar resultado

System.out.println("Ha introducido los nu meros: " + n1 + " y " + n2);

11. Escriba un programa en java que reciba dos listas como para metros y devuelva
un mensaje EQUALS si son iguales (mismos elementos en el mismo orden), o
DISTINCT en caso contrario.
12. Escriba un programa en java que verifique si un elemento x se encuentra o no
en un arreglo unidimensional de dimensio n n.
13. Escriba un programa en java que cuente la cantidad de ocurrencias de un
elemento x en un arreglo unidimensional de dimensio n n.
14. Escriba un programa en java que elimine el elemento x de un arreglo
unidimensional de dimensio n n.
15. Escriba un programa en java que inserte en forma ordenada un elemento x en
un arreglo ordenado de dimensio n n.
class ArrayDemo {

//un arreglo de 10 nu meros enteros desordenados


private static int numeros[] = { 7, 0, 9, 8, 1, 4, 6, 2, 3, 5 };

/**
* Punto de entrada del programa.
*
* @param args argumentos de la lnea de comandos.
*/
public static void main(String[] args) {
//imprimimos por pantalla el arreglo de nu meros enteros
System.out.println("Arreglo sin orden:");
for (int num : numeros) {
System.out.println(num);
}

System.out.println();

//ordenamos en forma ascendente el arreglo de nu meros enteros y lo


imprimimos por pantalla
System.out.println("Orden ascendente:");
ordSelAsc(numeros);
for (int num : numeros) {
System.out.println(num);
}

System.out.println();

//ordenamos en forma descendente el arreglo de nu meros enteros y lo


imprimimos por pantalla
System.out.println("Orden descendente:");
ordSelDesc(numeros);
for (int num : numeros) {
System.out.println(num);
}
}

/**
* Este me todo ordena en forma ascendente el arreglo pasado como
argumento usando el
* algoritmo de seleccio n.
*
* @param arreglo el arreglo que sera ordenado.
*/
static void ordSelAsc(int[] arreglo) {
//iteramos sobre los elementos del arreglo
for (int i = 0 ; i < arreglo.length - 1 ; i++) {
int min = i;

//buscamos el menor nu mero


for (int j = i + 1 ; j < arreglo.length ; j++) {
if (arreglo[j] < arreglo[min]) {
min = j; //encontramos el menor nu mero
}
}

if (i != min) {
//permutamos los valores
int aux = arreglo[i];
arreglo[i] = arreglo[min];
arreglo[min] = aux;
}
}
}

/**
* Este me todo ordena en forma descendente el arreglo pasado como
argumento usando el
* algoritmo de seleccio n.
*
* @param arreglo el arreglo que sera ordenado.
*/
static void ordSelDesc(int[] arreglo) {
//iteramos sobre los elementos del arreglo
for (int i = 0 ; i < arreglo.length - 1 ; i++) {
int max = i;

//buscamos el mayor nu mero


for (int j = i + 1 ; j < arreglo.length ; j++) {
if (arreglo[j] > arreglo[max]) {
max = j; //encontramos el mayor nu mero
}
}

if (i != max) {
//permutamos los valores
int aux = arreglo[i];
arreglo[i] = arreglo[max];
arreglo[max] = aux;
}
}
}
}

16. Escriba un programa en java que, a partir de dos arreglos ordenados A y B,


genere un nuevo arreglo ordena C, a trave s de un proceso de intercalacio n de
elementos (merge).
17. Realice un programa en java que permita invertir los elementos de un arreglo
unidimensional de longitud n dado.
18. En una hilera de una calle con adoquines unos nin os juegan a la rayuela. Para
esto numeran los adoquines de la siguiente forma:

Los movimientos permitidos del juego son:

Al principio del juego los nin os se ubican en el adoqun 0.


De un adoqun numerado i se puede saltar al adoqun numerado i+1.
De un adoqun numerado i se puede saltar al adoqun numerado i+2 (sin pasar
por el adoqun i+1)
Por ejemplo, el nu mero de caminos posibles para n=3 es 3 y son los siguientes:
(0,1,2,3), (0,2,3) y (0,1,3).
19. Realice un programa en java que calcule el nu mero de caminos posibles para

alcanzar un adoqun objetivo numerado con n (mayor que cero).


20. Un nu mero natural se denomina nmero perfecto si es precisamente igual a la

suma de todos sus divisores positivos sin incluirse el mismo. Realice un

algoritmo que determine si un entero positivo N es un nu mero perfecto.

Nmeros perfectos:
Divisores de 6 = {1,2,3,6} y 1+2+3 = 6

Divisores de 28 = {1,2,4,7,14,28} y 1+2+4+7+14 = 28

21. Realice un algoritmo que permita determina si una palabra es palindrome o no.

Anda mungkin juga menyukai