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

Recursividad en Java: Ejercicios Prácticos

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)
40 vistas10 páginas

Recursividad en Java: Ejercicios Prácticos

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

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 [Link];
import [Link];

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([Link]);
int n;
do {
[Link]("Introduce nmero de alumnos: ");
n = [Link]();
} while (n < 1);
return n;
}
public static void leerAlturas(ArrayList<Double> a, int n) {
Scanner sc = new Scanner([Link]);
int i;
double alto;
for (i = 1; i <= n; i++) {
do {
[Link]("Alumno " + i + " altura: ");
alto = [Link]();
} while (alto <= 0);
[Link](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 / [Link]();
}
public static void mostrarResultados(ArrayList<Double> a, double media)
{
int superior = 0, inferior = 0;
[Link]("alturas introducidas: ");
[Link](a);
for (Double d : a) {
if (d > media)
superior++;
else if (d < media)
inferior++;
}
[Link]("Media: %.2f %n", media);
[Link]("Hay " + superior + " alumnos ms altos que la
media");
[Link]("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 [Link];
import [Link];
import [Link];

public class Main {

public static void main(String[] args) {


ArrayList<Integer> array = leerValores();
double suma = calcularSuma(array);
double media = suma / [Link]();
mostrarResultados(array, suma, media);
}
public static ArrayList<Integer> leerValores() {
ArrayList<Integer> valores = new ArrayList();
Scanner sc = new Scanner([Link]);
int n;
[Link]("Introduce entero. -99 para acabar: ");
n = [Link]();
while (n != -99) {
[Link](n);
[Link]("Introduce entero. -99 para acabar: ");
n = [Link]();

Docente: Ing. Vinicio Ramos Valencia. MSc.


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

3. Rotar los elementos de un ArrayList.

import [Link];
import [Link];

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([Link]);
ArrayList<Integer> numeros = new ArrayList<Integer>();
int N;
do {
[Link]("Nmero de elementos del array (>0): ");
N = [Link]();
} while (N <= 0);
for (int i = 0; i < N; i++) {
[Link]("elemento[" + i + "]= ");
[Link]([Link]());

Docente: Ing. Vinicio Ramos Valencia. MSc.


}
return numeros;
}
public static void desplazarDerecha(ArrayList<Integer> a) {
int i;
int aux = [Link]([Link]() - 1);
for (i = [Link]() - 1; i > 0; i--) {
[Link](i, [Link](i - 1));
}
[Link](0, aux);
}
public static void desplazarDerecha2(ArrayList<Integer> a) {
int aux = [Link]([Link]()-1);
[Link](0,aux);
[Link]([Link]()-1);
}
public static void mostrar(ArrayList<Integer> a) {
[Link](a);
}
}

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

import [Link];
import [Link];
public class Main {

public static void main(String[] args) {


ArrayList<String> cadenas = new ArrayList();
leerArray(cadenas);
[Link]("Cadena de mayor longitud : " +
cadenaMasLarga(cadenas));
}
public static void leerArray(ArrayList<String> cadenas) {
Scanner sc = new Scanner([Link]);
String s;
boolean masCadenas;
do {
masCadenas = true;
[Link]("Introduce una cadena de caracteres (Fin para
acabar): ");
s = [Link]();
if ([Link]("FIN")) {
masCadenas = false;
} else {
[Link](s);
}
} while (masCadenas);
}
public static String cadenaMasLarga(ArrayList<String> cadenas) {
String mayor = [Link](0);
for (int i = 1; i < [Link](); i++) {
if ([Link](i).length() > [Link]()) {

Docente: Ing. Vinicio Ramos Valencia. MSc.


mayor = [Link](i);
}
}
return mayor;
}
}

5. Utilizar un ArrayList de Objetos.

Ejercicios sobre cadenas de caracteres

6. Contar el nmero de palabras de una frase.

import [Link];
import [Link];
public class ContarPalabras {
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
String frase;
[Link]("Introduce una frase: ");
frase = [Link]();
StringTokenizer st = new StringTokenizer(frase);
[Link]("Nmero de palabras: " + [Link]());
}
}
public static int contarPalabras(String s) {
int contador = 1, pos;
s = [Link]();
if ([Link]()) {
contador = 0;
} else {
pos = [Link](" ");
while (pos != -1) {
contador++;
pos = [Link](" ", 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([Link]);

String Frase;

Docente: Ing. Vinicio Ramos Valencia. MSc.


int pos = 0;
String Palabra="";

[Link]("INGRESE LA FRASE:");
Frase=[Link]();
Frase=[Link]();

for (int i = 0; i < [Link](); i++) {


if([Link](i, i+1).equals(" ")){
pos=i;
}
}
if(pos>0){
for (int i = 0; i < pos; i++) {
Palabra = Palabra + [Link](i, i+1);
}
[Link]("LA FRASE NUEVA ES: ");
[Link](Palabra);
}else{
[Link]("LA FRASE ESTA VACIA");
}
}
}

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

import [Link];
import [Link];

public class Main {

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


Scanner sc = new Scanner([Link]);
String texto;
char caracter;
int numeroDeVeces = 0;
do {
[Link]("Introduce texto: ");
texto = [Link]();
} while ([Link]());
[Link]("Introduce un carcter: ");
caracter = (char) [Link]();
numeroDeVeces = contarCaracteres(texto, caracter);
[Link]("El caracter " + caracter + " aparece " +
numeroDeVeces + " veces");
}
public static int contarCaracteres(String cadena, char caracter) {
int posicion, contador = 0;
posicion = [Link](caracter);
while (posicion != -1) {
contador++;
posicion = [Link](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 [Link].*;
public class Recursividad {

public static void main(String[] args) {


Scanner sc = new Scanner([Link]);
int n1, n2;
[Link]("Introduzca dividendo: ");
n1 = [Link]();
do {
[Link]("Introduzca divisor (>0): ");
n2 = [Link]();
} while (n1 <= 0);
[Link]("%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 [Link].*;
public class Recursividad {

public static void main(String[] args) {


Scanner sc = new Scanner([Link]);
int n;
do {
[Link]("Introduzca numero >0: ");
n = [Link]();
} while (n < 0);
[Link]();
[Link]("Binario: ");
decBin(n);
[Link]();
}

public static void decBin(int n) {


if (n < 2) {
[Link](n);

Docente: Ing. Vinicio Ramos Valencia. MSc.


return;
} else {
decBin(n / 2);
[Link](n % 2);
return;
}
}
}

11. Calcular 2 elevado a n de forma recursiva

import [Link].*;
public class Elevar2aN {
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
int num;
do{
[Link]("Introduce un numero entero >=0 ");
num = [Link]();
}while(num<0);
[Link]("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 [Link].*;
public class CuentaCifras {
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
int num;
do{
[Link]("Introduce un numero entero >0 ");
num = [Link]();
}while(num<=0);
[Link]("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 [Link].*;
public class Suma1N {

Docente: Ing. Vinicio Ramos Valencia. MSc.


public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
int num;
do{
[Link]("Introduce un numero entero >0 ");
num = [Link]();
}while(num<=0);
[Link]("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 [Link].*;
public class Recursividad1 {

public static void main(String[] args) {


Scanner sc = new Scanner([Link]);
int n1, n2;
[Link]("Introduzca primer numero: ");
n1 = [Link]();
[Link]("Introduzca segundo numero: ");
n2 = [Link]();
[Link]("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([Link]);
int n1, n2;
[Link]("Introduzca dividendo: ");
n1 = [Link]();
do {
[Link]("Introduzca divisor (>0): ");
n2 = [Link]();

Docente: Ing. Vinicio Ramos Valencia. MSc.


} while (n1 <= 0);
[Link]("%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