0% encontró este documento útil (0 votos)
157 vistas10 páginas

Java Recursividad

1. El documento presenta una serie de ejercicios sobre el uso de ArrayList y cadenas en Java. Incluye 10 ejercicios con código de ejemplo que resuelven problemas como calcular la altura media de alumnos, contar palabras en una frase y convertir números decimales a binarios de forma recursiva.

Cargado por

Christhian Lko
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
157 vistas10 páginas

Java Recursividad

1. El documento presenta una serie de ejercicios sobre el uso de ArrayList y cadenas en Java. Incluye 10 ejercicios con código de ejemplo que resuelven problemas como calcular la altura media de alumnos, contar palabras en una frase y convertir números decimales a binarios de forma recursiva.

Cargado por

Christhian Lko
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

ESCUELA DE INGENIERIA EN ELECTRONICA TELECOMUNICACIONES Y

REDES
LENGUAJES DE PROGRAMACIN 2
Integrantes:

No NOMBRES Y APELLIDOS CDIGO


1 Paguay Evelyn 887
2 Guananga Cristian 891
3 Valverde David 870
4
5

Desarrolle los Siguientes Problemas:

Ejercicios con ArrayList

1. Calcular la altura media de los alumnos de una clase.

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {


ArrayList<Double> altura = new ArrayList();
int N;
double media;
N = numeroAlumnos();
leerAlturas(altura, N);
media = calcularMedia(altura);
mostrarResultados(altura, media);
}
public static int numeroAlumnos() {
Scanner sc = new Scanner(System.in);
int n;
do {
System.out.print("Introduce nmero de alumnos: ");
n = sc.nextInt();
} while (n < 1);
return n;
}
public static void leerAlturas(ArrayList<Double> a, int n) {
Scanner sc = new Scanner(System.in);
int i;
double alto;
for (i = 1; i <= n; i++) {
do {
System.out.print("Alumno " + i + " altura: ");
alto = sc.nextDouble();
} while (alto <= 0);
a.add(alto);

Docente: Ing. Vinicio Ramos Valencia. MSc.


}
}
public static double calcularMedia(ArrayList<Double> a) {
double media = 0;
for (Double d : a) {
media = media + d;
}
return media / a.size();
}
public static void mostrarResultados(ArrayList<Double> a, double media)
{
int superior = 0, inferior = 0;
System.out.println("alturas introducidas: ");
System.out.println(a);
for (Double d : a) {
if (d > media)
superior++;
else if (d < media)
inferior++;
}
System.out.printf("Media: %.2f %n", media);
System.out.println("Hay " + superior + " alumnos ms altos que la
media");
System.out.println("Hay " + inferior + " alumnos ms bajos que la
media");
}
}

2. Leer nmeros por teclado hasta introducir -99. Calcular la suma, la media y
cuntos son mayores que la media.

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {


ArrayList<Integer> array = leerValores();
double suma = calcularSuma(array);
double media = suma / array.size();
mostrarResultados(array, suma, media);
}
public static ArrayList<Integer> leerValores() {
ArrayList<Integer> valores = new ArrayList();
Scanner sc = new Scanner(System.in);
int n;
System.out.print("Introduce entero. -99 para acabar: ");
n = sc.nextInt();
while (n != -99) {
valores.add(n);
System.out.print("Introduce entero. -99 para acabar: ");
n = sc.nextInt();

Docente: Ing. Vinicio Ramos Valencia. MSc.


}
return valores;
}
public static double calcularSuma(ArrayList<Integer> valores) {
double suma = 0;
Iterator it = valores.iterator();
while (it.hasNext()) {
suma = suma + (Integer) it.next();
}
return suma;
}
public static void mostrarResultados(ArrayList<Integer> valores, double
suma, double media) {
int cont = 0;
System.out.println("Valores introducidos: ");
System.out.println(valores);
System.out.println("Suma: " + suma);
System.out.printf("Media: %.2f %n", media);
for (Integer i : valores) {
if (i > media) {
cont++;
}
}
System.out.println(cont + " valores superiores a la media");
}
}

3. Rotar los elementos de un ArrayList.

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {


ArrayList<Integer> A = leerArray();
mostrar(A);
desplazarDerecha(A);
mostrar(A);
desplazarDerecha2(A);
mostrar(A);
}
public static ArrayList<Integer> leerArray() {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> numeros = new ArrayList<Integer>();
int N;
do {
System.out.print("Nmero de elementos del array (>0): ");
N = sc.nextInt();
} while (N <= 0);
for (int i = 0; i < N; i++) {
System.out.print("elemento[" + i + "]= ");
numeros.add(sc.nextInt());

Docente: Ing. Vinicio Ramos Valencia. MSc.


}
return numeros;
}
public static void desplazarDerecha(ArrayList<Integer> a) {
int i;
int aux = a.get(a.size() - 1);
for (i = a.size() - 1; i > 0; i--) {
a.set(i, a.get(i - 1));
}
a.set(0, aux);
}
public static void desplazarDerecha2(ArrayList<Integer> a) {
int aux = a.get(a.size()-1);
a.add(0,aux);
a.remove(a.size()-1);
}
public static void mostrar(ArrayList<Integer> a) {
System.out.println(a);
}
}

4. Cadena ms larga contenida en un ArrayList de Strings.

import java.util.ArrayList;
import java.util.Scanner;
public class Main {

public static void main(String[] args) {


ArrayList<String> cadenas = new ArrayList();
leerArray(cadenas);
System.out.println("Cadena de mayor longitud : " +
cadenaMasLarga(cadenas));
}
public static void leerArray(ArrayList<String> cadenas) {
Scanner sc = new Scanner(System.in);
String s;
boolean masCadenas;
do {
masCadenas = true;
System.out.print("Introduce una cadena de caracteres (Fin para
acabar): ");
s = sc.nextLine();
if (s.equalsIgnoreCase("FIN")) {
masCadenas = false;
} else {
cadenas.add(s);
}
} while (masCadenas);
}
public static String cadenaMasLarga(ArrayList<String> cadenas) {
String mayor = cadenas.get(0);
for (int i = 1; i < cadenas.size(); i++) {
if (cadenas.get(i).length() > mayor.length()) {

Docente: Ing. Vinicio Ramos Valencia. MSc.


mayor = cadenas.get(i);
}
}
return mayor;
}
}

5. Utilizar un ArrayList de Objetos.

Ejercicios sobre cadenas de caracteres

6. Contar el nmero de palabras de una frase.

import java.util.Scanner;
import java.util.StringTokenizer;
public class ContarPalabras {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String frase;
System.out.print("Introduce una frase: ");
frase = sc.nextLine();
StringTokenizer st = new StringTokenizer(frase);
System.out.println("Nmero de palabras: " + st.countTokens());
}
}
public static int contarPalabras(String s) {
int contador = 1, pos;
s = s.trim();
if (s.isEmpty()) {
contador = 0;
} else {
pos = s.indexOf(" ");
while (pos != -1) {
contador++;
pos = s.indexOf(" ", pos + 1);
}
}
return contador;
}

7. Eliminar la ltima palabra de una frase.


public class ExampleThree {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

String Frase;

Docente: Ing. Vinicio Ramos Valencia. MSc.


int pos = 0;
String Palabra="";

System.out.println("INGRESE LA FRASE:");
Frase=sc.nextLine();
Frase=Frase.trim();

for (int i = 0; i < Frase.length(); i++) {


if(Frase.substring(i, i+1).equals(" ")){
pos=i;
}
}
if(pos>0){
for (int i = 0; i < pos; i++) {
Palabra = Palabra + Frase.substring(i, i+1);
}
System.out.println("LA FRASE NUEVA ES: ");
System.out.println(Palabra);
}else{
System.out.println("LA FRASE ESTA VACIA");
}
}
}

8. Contar el nmero de veces que aparece un carcter en un texto.

import java.io.IOException;
import java.util.Scanner;

public class Main {

public static void main(String[] args) throws IOException {


Scanner sc = new Scanner(System.in);
String texto;
char caracter;
int numeroDeVeces = 0;
do {
System.out.println("Introduce texto: ");
texto = sc.nextLine();
} while (texto.isEmpty());
System.out.print("Introduce un carcter: ");
caracter = (char) System.in.read();
numeroDeVeces = contarCaracteres(texto, caracter);
System.out.println("El caracter " + caracter + " aparece " +
numeroDeVeces + " veces");
}
public static int contarCaracteres(String cadena, char caracter) {
int posicion, contador = 0;
posicion = cadena.indexOf(caracter);
while (posicion != -1) {
contador++;
posicion = cadena.indexOf(caracter, posicion + 1);
}

Docente: Ing. Vinicio Ramos Valencia. MSc.


return contador;
}
}

Ejercicios sobre Recursividad

9. Calcular el cociente de dos nmeros enteros de forma recursiva.

import java.util.*;
public class Recursividad {

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);
int n1, n2;
System.out.print("Introduzca dividendo: ");
n1 = sc.nextInt();
do {
System.out.print("Introduzca divisor (>0): ");
n2 = sc.nextInt();
} while (n1 <= 0);
System.out.printf("%d/%d = %d %n", n1, n2, cociente(n1, n2));
}

public static int cociente(int a, int b) {


if (a < b)
return 0;
else
return 1 + cociente(a - b, b);
}
}
10. Pasar de decimal a binario de forma recursiva.

import java.util.*;
public class Recursividad {

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);
int n;
do {
System.out.print("Introduzca numero >0: ");
n = sc.nextInt();
} while (n < 0);
System.out.println();
System.out.print("Binario: ");
decBin(n);
System.out.println();
}

public static void decBin(int n) {


if (n < 2) {
System.out.print(n);

Docente: Ing. Vinicio Ramos Valencia. MSc.


return;
} else {
decBin(n / 2);
System.out.print(n % 2);
return;
}
}
}

11. Calcular 2 elevado a n de forma recursiva

import java.util.*;
public class Elevar2aN {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
do{
System.out.print("Introduce un numero entero >=0 ");
num = sc.nextInt();
}while(num<0);
System.out.println("2 ^ " + num + " = " + potencia(num));
}
public static double potencia(int n){
if(n==0) //caso base
return 1;
else
return 2 * potencia(n-1);
}
}
12. Calcular el nmero de cifras de un nmero entero de forma recursiva.

import java.util.*;
public class CuentaCifras {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
do{
System.out.print("Introduce un numero entero >0 ");
num = sc.nextInt();
}while(num<=0);
System.out.println("Nmero de cifras: " + numeroCifras(num));
}
public static int numeroCifras(int n){
if(n < 10) //caso base
return 1;
else
return 1 + numeroCifras(n/10);
}
}
13. Calcular la suma desde 1 hasta un nmero entero N de forma recursiva.

import java.util.*;
public class Suma1N {

Docente: Ing. Vinicio Ramos Valencia. MSc.


public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
do{
System.out.print("Introduce un numero entero >0 ");
num = sc.nextInt();
}while(num<=0);
System.out.println("Suma desde 1 hasta " + num + " = " +
suma1N(num));

public static double suma1N(int n){


if(n == 1) //caso base
return 1;
else
return n + suma1N(n-1);
}
}
14. Sumar dos nmeros enteros de forma recursiva.
import java.util.*;
public class Recursividad1 {

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);
int n1, n2;
System.out.print("Introduzca primer numero: ");
n1 = sc.nextInt();
System.out.print("Introduzca segundo numero: ");
n2 = sc.nextInt();
System.out.println("suma: " + suma(n1, n2));

}
public static int suma(int a, int b) {
if (b == 0) {
return a;
} else if (a == 0) {
return b;
} else {
return 1 + suma(a, b - 1);
}
}

15. Calcular el resto de la divisin de forma recursiva


public class EjemploRecursividad {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n1, n2;
System.out.print("Introduzca dividendo: ");
n1 = sc.nextInt();
do {
System.out.print("Introduzca divisor (>0): ");
n2 = sc.nextInt();

Docente: Ing. Vinicio Ramos Valencia. MSc.


} while (n1 <= 0);
System.out.printf("%d%%%d = %d %n", n1, n2, restoRecursivo(n1,
n2));
}
public static int restoRecursivo(int a, int b) {
if (a < b) {
return a;
} else {
return resto(a - b, b);
}
}
}

Docente: Ing. Vinicio Ramos Valencia. MSc.

También podría gustarte