1. Construir una aplicación en el que el usuario proporcione una cantidad entera
y la aplicación indique através de un mensaje la cantidad si es positiva o negativa,
par o impar: o en su defecto si es neutra.
import java.util.Scanner;
public class EVALUARNUMERO {
public static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
int numero;
EVALUARNUMERO N=new EVALUARNUMERO();
System.out.println("Ingrese el numero: ");
numero=teclado.nextInt();
System.out.println("nEL NUMERO INGRESADO ES: ");
N.NumeroImpar(numero);
N.NumeroNegativo(numero);
N.NumeroNeutro(numero);
N.NumeroPar(numero);
N.NumeroPositivo(numero);
}
public void NumeroPar(int numero){
if(numero%2==0){
System.out.println("Numero Par");
}
}
public void NumeroImpar(int numero){
if(numero%2!=0){
System.out.println("Numero Impar");
}
}
public void NumeroNegativo(int numero){
if(numero<0){
System.out.println("Numero Negativo");
}
}
public void NumeroPositivo(int numero){
if(numero>0){
System.out.println("Numero Positivo");
}
}
public void NumeroNeutro(int numero){
if(numero==0){
System.out.println("Numero Neutro");
}
}
}
EJERCICIOS RESUELTOS
1. Ingrese un número entero y encuentre el dígito mayor y el dígito menor.
SOLUCIÓN:
import java.util.Scanner;
public class MAYORMENOR {
public static void main(String[] args) {
Scanner b=new Scanner(System.in);
int n, mayor=0, menor=10, digito;
System.out.println("Ingrese el numero a evaluar: ");
n=b.nextInt();
while(n>0){
digito=n%10;
n=n/10;
if(digito>=mayor){
mayor=digito;
}
if(digito<menor){
menor=digito;
}
}
System.out.println("El digito mayor es: "+mayor);
System.out.println("El digito menor es: "+menor);
}
}
2. En una tienda se ha establecido la siguiente oferta: por compras menores
a 50 soles se hace un descuento de 8%, pero para compras a partir de 50
el descuento es de 10%. Se pide ingresar la cantidad y el precio del
producto que se compra y determinar cuanto se descontará y cuanto se
cobrará.
SOLUCIÓN:
import java.util.Scanner;
public class EJERCICIO3 {
public static void main(String[] args) {
Scanner consola=new Scanner(System.in);
double cantidad, precio,pago, descuento;
System.out.println("ingresar cantidad: ");
cantidad=consola.nextInt();
System.out.println("ingrese el precio: ");
precio=consola.nextInt();
pago=cantidad*precio;
if(pago<50){
descuento=pago*0.08;
pago=pago-descuento;
System.out.println("el descuento es: "+descuento+" , el pago a realizar es:
"+pago);
}
else{
descuento=pago*0.1;
pago=pago-descuento;
System.out.println("el descuento es: "+descuento+" , el pago a realizar es:
"+pago);
}
}
}
EJERCICIOS RESUELTOS
1. Diseñe un algoritmo para un cajero automático. El cajero tiene la
particularidad de dar solamente billetes de 500, 200, 100, 50, y 20. Si
el usuario ingresa una cantidad menor a 1500 que desea retirar, debe
arrojarle la cantidad mínima de billetes de cada tipo.
NOTA: No debe dar billetes de 10 soles, POR EJEMPLO, si se le
ingresa un monto de 510, debe arrojarme:
Billetes de 200: 2
Billetes de 50: 1
Billetes de 20: 3
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CAJERO2 {
public static void main(String[] args) throws IOException{
BufferedReader consola = new BufferedReader(new
InputStreamReader(System.in));
int monto, i, b1 = 0, b2=0, b3=0, b4=0, b5=0, b500, b200, b100, b50, b20;
do{
System.out.println("Ingrese un monto MENO O IGUAL a 1500: ");
monto=Integer.parseInt(consola.readLine());
}while((monto<=30||monto>1500)||monto%10!=0);
while(monto>=20){
if(monto>=500&&(monto!=510&&monto!=530)){
if(monto>1000){
b1+=(int)monto/500;
monto=monto-b1*500;
}
else{
if(monto%500!=30&&monto%500!=10){
b1+=(int)monto/500;
monto=monto-b1*500;
}
}
}
if(monto>=200&&(monto%200>=10||monto%200==0)){
if(monto>410){
b2+=(int)monto/200;
monto=monto-b2*200;
}
else{
if(monto%200!=30&&monto%200!=10){
b2+=(int)monto/200;
monto=monto-b2*200;
}
}
}
if(monto>=100&&(monto%100>=10||monto%100==0)){
if(monto>110){
b3++;
monto=monto-100;
}
else{
if(monto%100!=30&&monto%100!=10){
b100=(int)monto/100;
b3=b3+b100;
monto=monto-b100*100;
}
}
}
if(monto>=50&&(monto%50>=10||monto%50==0)){
if(monto>100){
b4++;
monto=monto-50;
}
else{
if(monto%50!=30&&monto%50!=10){
b50=(int)monto/50;
b4=b4+b50;
monto=monto-b50*50;
}
}
}
if(monto>=20){
b20=(int)monto/20;
b5=b5+b20;
monto=monto-b20*20;
}
}
if(b1>0){
System.out.println("Billetes de 500: "+b1);
}
if(b2>0){
System.out.println("Billetes de 200: "+b2);
}
if(b3>0){
System.out.println("Billetes de 100: "+b3);
}
if(b4>0){
System.out.println("Billetes de 50: "+b4);
}
if(b5>0){
System.out.println("Billetes de 20: "+b5);
}
}
}
2. Ingrese un número BINARIO (número compuesto por ceros y unos),
y muestre su equivalente. Pr ejemplo, si ingreso 101101, debe
mostrarme 45 como su equivalente.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class EnteroBinario {
public static void main(String[] args) throws IOException{
BufferedReader consola=new BufferedReader(new
InputStreamReader(System.in));
int i, j, k=0, equivalente=0, numero, b=0;
boolean m = false;
String N;
do{
System.out.println("Ingrese el numero entero binario: ");
numero=Integer.parseInt(consola.readLine());
N=Integer.toString(numero);
for(i=0;i<N.length();i++){
if(N.charAt(i)=='0'||N.charAt(i)=='1'){
m=true;
b++;
}
}
}while(b<N.length());
j=numero;
while(numero>0){
numero=(int)numero/10;
k++;
}
for(i=0;i<k;i++){
equivalente+=(j%10)*Math.pow(2,i);
j=(int)j/10;
}
System.out.println("El equivalente del numero ingresado es:
"+equivalente);
}
}
3. Un número se considera perfecto cuando la suma de sus divisores
es igual al número, por ejemplo 28, tiene como divisores a 1, 2, 4, 7
y 14. Luego 28 es número perfecto, pues 1+2+4+7+14=28. Hacer un
algoritmo para determinar si un número ingresado por teclado es
perfecto.
SOLUCIÓN:
import java.util.Scanner;
public class perfecto {
public static void main(String[] args) {
Scanner b=new Scanner(System.in);
int n, suma=1,i=2;
System.out.println("Ingrese el numero: ");
n=b.nextInt();
while(i<n){
if(n%i==0){
suma=suma+i;
}
i++;
}
if(suma==n){
System.out.println("El numero es perfecto");
}
else{
System.out.println("el numero no es perfecto");
}
}
}
4. La tribuna de un estadio esta numerada del 1 al 500 en la parte
superior horizontal que corresponde al número de asiento por
columna; y del 1 al 50 en la parte izquierda vertical que corresponde
al número de asiento por fila. Los boletos tienen una numeración
correlativa del 1 al 25000. Para cualquier número de boleto determinar
el número de fila y el número de columna que le correspondería a la
ubicación de su asiento.
SOLUCIÓN:
import java.util.Scanner;
public class Asientoestadio {
public static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
int asiento, fila=0, columna=0;
System.out.println("Ingrese el numero de asiento: ");
asiento=teclado.nextInt();
while(asiento>500){
fila++;
asiento=asiento-500;
}
fila++;
columna=asiento;
System.out.println("El asiento corresponde a la fila: "+fila+" y a la columna:
"+columna);
}
}
5. Diseñe un algoritmo que convierte un número en base 10, a otro
número en base menor que 10. El número en base 10 y la base a la
que se va a convertir se deben ingresar por teclado.
SOLUCIÓN:
import java.util.Scanner;
public class ConvierteNumeroAbaseMenora10 {
public static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
int base, numero,div=0,i=1;
System.out.println("Ingrese el numero en base 10: ");
numero=teclado.nextInt();
do{
System.out.println("Ingrese la base menor a 10 : ");
base=teclado.nextInt();
}while(base<=1||base>=10);
while(numero>=base){
div=div+(numero%base)*i;
numero=(int)(numero/base);
i=i*10;
}
div=div+(numero*i);
System.out.println("el numero en base "+base+" es: "+div);
}
}
EJERCICIOS RESUELTOS
1. Ingrese un numero entero menor o igual a 4 cifras y muestre como se lee
SOLUCIÓN:
import java.util.Scanner;
public class escritura {
public static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
int n=0, con=0,n2=0, n1;
String numero,mensaje="", m1="DIEZ", m2="ONCE", m3="DOCE",
m4="TRECE", m5="CATORCE", M6="QUINCE",
m7="VEINTE", m8="VEINTI";
String[]
naturales={"","UNO","DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO","
NUEVE"};
String[] diez={"","ONCE","DOCE","TRECE","CATORCE","QUINCE"};
String[]
decenas={"","DIEZ","VEINTE","TREINTA","CUARENTA","CINCUENTA","SESENTA",
"SETENTA","OCHENTA","NOVENTA"};
String[]
centenas={"","CIEN","DOSCIENTOS","TRESCIENTOS","CUATROCIENTOS","QUINI
ENTOS","SEISCIENTOS","SETECIENTOS","OCHOCIENTOS","NOVECIENTOS"};
do{
System.out.println("Ingrese el numero a evaluar:");
numero=teclado.next();
}while(numero.length()>4);
con=numero.length();
n1=Integer.parseInt(numero.substring(con-3,con));
n2=Integer.parseInt(numero.substring(con-2,con));
for (int i = 0; i <numero.length() ; i++) {
n=Integer.parseInt(numero.substring(i,i+1));
if(con==4){
if(n>1)
mensaje=naturales[n]+" MIL"+mensaje;
else
mensaje=" MIL"+mensaje;
}
else{
if(con==3){
if(n==1&&n2>0){
mensaje=mensaje+" CIENTO";
}
else{
if(n>1){
mensaje=mensaje+" "+centenas[n];
}else{
if(n!=0)
mensaje=mensaje+" CIEN";
else
mensaje=mensaje+"";
}
}
}
else{
if(con==2){
if(n2<10){
mensaje=mensaje+" "+naturales[n2];
break;
}
else{
if(n2>10&&n2<16){
mensaje=mensaje+" "+diez[n2%10];
break;
}
else{
if(n2>15&&n2<20){
mensaje=mensaje+" "+"DIECI";
}
if(n2>20&&n2<30){
mensaje=mensaje+" "+"VEINTI";
}
}
if(n2%10==0){
mensaje=mensaje+" "+decenas[n];
break;
}
else{
if(n2>30)
mensaje=mensaje+" "+decenas[n];
}
}
}
else{
if(n2>30)
mensaje=mensaje+" Y "+naturales[n];
else
mensaje=mensaje+naturales[n];
}
}
}
con--;
}
System.out.println("El numero se lee: "+mensaje);
}
}
2. Realice un algoritmo para convertir unidades de medida.
SOLUCIÓN:
import java.util.*;
public class Manejador2 {
public static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
String[][] matriz={
{"GIGA","MEGA","1000"},
{"MEGA","KILO","1000"},
{"KILO","HECT","10"},
{"HECT","DECA","10"},
{"DECA","****","10"},
{"****","DECI","10"},
{"DECI","CENT","10"},
{"CENT","MILI","10"},
{"MILI","MICR","1000"},
{"MICR","NANO","1000"},
};
String Ubase, Usalida,UE="",US = "", C1,C2, E, S;
int n, con=0;
double resultado=1, canti = 0;
System.out.println("Ingrese la cantidad a convertir:");
n=teclado.nextInt();
System.out.println("Ingrese la base: ");
Ubase=teclado.next();
System.out.println("Ingrese la salida: ");
Usalida=teclado.next();
E=Ubase.substring(0,4);
S=Usalida.substring(0,4);
if(E.equals("METR")||E.equals("GRAM")||E.equals("LITR")){
E="****";
}
if(S.equals("METR")||S.equals("GRAM")||S.equals("LITR")){
S="****";
}
C1=E; C2=S;
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
if(matriz[i][0].equals(E)){
UE=matriz[i][0];
US=matriz[i][1];
canti=Double.parseDouble(matriz[i][2]);
con++;
break;
}
else{
break;
}
}
if(US.equals(S)){
resultado=resultado*canti;
break;
}
else{
if(con>0){
resultado=resultado*canti;
E=US;
con=0;
}
}
}
if(!US.equals(S)||UE.length()<=0){
resultado=1;
for (int i = matriz.length-1; i >=0; i--) {
for (int j = 0; j < matriz[0].length; j++) {
if(matriz[i][1].equals(C1)){
UE=matriz[i][1];
US=matriz[i][0];
canti=Double.parseDouble(matriz[i][2]);
con++;
break;
}
else{
break;
}
}
if(US.equals(C2)){
resultado=resultado/canti;
break;
}
else{
if(con>0){
resultado=resultado/canti;
C1=US;
con=0;
}
}
}
}
if(US.equals(C2))
System.out.println("nEl resultado es: "+resultado*n+" "+Usalida);
else
System.out.println("nNo se puede realizar la conversion");
}
}
EJERCICIOS RESUELTOS
1. Leer una frase y encontrar la palabra de mayor longitud. El programa debe
imprimir la palabra como el número de caracteres de la misma
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc12 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i, c=0;
String cadena, palabra="", mostrar = null;
System.out.println("Ingrese la cadena: ");
cadena=br.readLine();
cadena+=" ";
for(i=0;i<cadena.length();i++){
palabra=palabra+cadena.charAt(i);
if(cadena.charAt(i)==' '){
if(palabra.length()-1>c){
c=palabra.length()-1;
mostrar=palabra.trim();
}
palabra="";
}
}
System.out.println("La palabra de mayor longitud es: "+mostrar);
System.out.println("Su longitud es: "+c);
}
}
2. Ingresar una cadena y determinar cuantas palabras se encuentran en la
cadena. Cada palabra se separa por medio de un espacio en blanco.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc11 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i, con=1;
String cadena, palabra="";
System.out.println("Ingrese la cadena a evaluar: ");
cadena=br.readLine();
for(i=0;i<cadena.length();i++){
if(cadena.charAt(i)==' '){
con++;
}
}
System.out.println("La cadena contiene "+con+" palabras");
}
}
3. Ingresar un número telefónico en formato de cadena y luego lo convierta de
la siguiente manera:
Número Telefónico: 5256284000
Nueva Cadena: (52)-5-6284000
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc15 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i;
String cadena,c1="", c2="", c3="";
System.out.println("Ingrese la cadena a evaluar: ");
cadena=br.readLine();
for(i=0;i<cadena.length();i++){
if(i<2){
c1=c1+cadena.charAt(i);
}
else{
if(i==2){
c2+=cadena.charAt(i);
}
else{
c3+=cadena.charAt(i);
}
}
}
System.out.println("la nueva cadena es: n"+"("+c1+")"+"-"+c2+"-"+c3);
}
}
4. Hacer un programa que al recibir como datos dos cadenas de caracteres
forme una tercera cadena intercalando los caracteres de las palabras de las
cadenas recibidas.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc16 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i, j, k=0;
String cadena1, cadena2, cadena3="";
System.out.println("Ingrese la primera cadena: ");
cadena1=br.readLine();
System.out.println("Ingrese la segudna cadena: ");
cadena2=br.readLine();
for(i=0;i<cadena1.length();i++){
cadena3+=cadena1.charAt(i);
for(j=k;j<cadena2.length();j++){
cadena3+=cadena2.charAt(j);
j=cadena2.length();
k++;
}
}
System.out.println("La cadena intercalada es: "+cadena3);
}
}
5. Ingrese un texto e indique que letras no han aparecido en el texto.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc20 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int ini, con=0;
String texto, nueva="", mensaje="";
System.out.println("Ingrese el texto a evaluar: ");
texto=br.readLine();
for(ini=0;ini<texto.length();ini++){
if(texto.charAt(ini)!=' '){
nueva=nueva+texto.charAt(ini);
}
}
nueva=nueva.toLowerCase();
for(char caracter='a';caracter<='z';caracter++){
for(ini=0;ini<nueva.length();ini++){
if(caracter==nueva.charAt(ini)){
con++;
}
}
if(con==0){
mensaje+=caracter+" ";
}
con=0;
}
System.out.println("nLos caracteres que faltan son: n"+mensaje);
}
}
6. Ingrese un texto e indique el porcentaje de palabras que tiene menos de 5
caracteres y el porcentaje de palabras con 5 o más caracteres.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc21 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i;
double porcentaje1, porcentaje2, con=0, p5=0, p6=0;
String texto, palabra="";
System.out.println("Ingrese el texto a evaluar: ");
texto=br.readLine();
texto=texto+" ";
for(i=0;i<texto.length();i++){
palabra+=texto.charAt(i);
if(texto.charAt(i)==' '){
palabra=palabra.trim();
if(palabra.length()<5){
p5++;
}
else{
p6++;
}
palabra="";
con++;
}
}
porcentaje1=(double)((p5/con)*100);
porcentaje2=(double)((p6/con)*100);
System.out.println("El porcentaje de palabras con menos de 5 caracteres es:
"+porcentaje1+" %");
System.out.println("El porcentaje de palabras con 5 o mas caracteres es:
"+porcentaje2+" %");
}
}
7. Escriba un programa que lea una frase y a continuación visualice cada
palabra de la frase en columnas, seguida del número de letras que tiene cada
palabra.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc23 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i, j;
String frase, palabra="", nueva="";
System.out.println("Ingrese la frase a evaluar: ");
frase=br.readLine();
frase+=" ";
for(i=0;i<frase.length();i++){
palabra+=frase.charAt(i);
if(frase.charAt(i)==' '){
palabra=palabra.trim();
nueva=palabra;
for(j=0;j<nueva.length();j++){
System.out.println("t"+nueva.charAt(j));
}
System.out.println("t"+nueva.length()+"nn");
palabra="";
}
}
}
}
8. Escriba un programa que calcule la frecuencia de aparición de las vocales de
un texto porcionado por el usuario. Esta solución se debe presentar en forma
de histograma, por ejmplo:
a 15 ***************
e 8 ********
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc24 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i, c1=0, c2=0,c3=0, c4=0, c5=0;
String texto, m1="", m2="", m3="", m4="", m5="";
System.out.println("Ingrese el texto a evaluar: ");
texto=br.readLine();
texto=texto.toLowerCase();
for(i=0;i<texto.length();i++){
if(texto.charAt(i)=='a'){
c1++;
m1+="*";
}
if(texto.charAt(i)=='e'){
c2++;
m2+="*";
}
if(texto.charAt(i)=='i'){
c3++;
m3+="*";
}
if(texto.charAt(i)=='o'){
c4++;
m4+="*";
}
if(texto.charAt(i)=='u'){
c5++;
m5+="*";
}
}
System.out.println("");
System.out.println("a"+" "+c1+" "+m1);
System.out.println("e"+" "+c2+" "+m2);
System.out.println("i"+" "+c3+" "+m3);
System.out.println("o"+" "+c4+" "+m4);
System.out.println("u"+" "+c5+" "+m5);
}
}
9. Escribir un programa que cuente el número de palabras en un texto, que
tengan al menos cuatro vocales diferentes.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc25 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i, con=0, c1=0, c2=0, c3=0, c4=0, c5=0, vocales;
String texto, palabra="";
System.out.println("Ingrese la palabra a evaluar: ");
texto=br.readLine();
texto=texto.toLowerCase();
texto+=" ";
for(i=0;i<texto.length();i++){
palabra+=texto.charAt(i);
if(texto.charAt(i)==' '){
palabra=palabra.trim();
for(int j=0;j<palabra.length();j++){
if(palabra.charAt(j)=='a'){
c1++;
if(c1>1){
c1=1;
}
}
if(palabra.charAt(j)=='e'){
c2++;
if(c2>1){
c2=1;
}
}
if(palabra.charAt(j)=='i'){
c3++;
if(c3>1){
c3=1;
}
}
if(palabra.charAt(j)=='o'){
c4++;
if(c4>1){
c4=1;
}
}
if(palabra.charAt(j)=='u'){
c5++;
if(c5>1){
c5=1;
}
}
}
palabra="";
vocales=c1+c2+c3+c4+c5;
c1=0; c2=0; c3=0; c4=0; c5=0;
if(vocales>=4){
con++;
}
}
}
System.out.println("Las palabras son: "+con);
}
}
10. Un grupo de inteligencia militar desea codificar los mensajes secretos de tal
forma que no puedan ser interpretados con una lectura directa, para lo cual
han establecido las siguientes reglas:
a) Todo mensaje debe estar sus letras en mayúsculas.
b) Reemplazar cada letra por la que sigue según abecedario, excepto Z
que se deberá reemplazar con la letra A.
c) reemplazar cada dígito encontrado por el siguiente numero excepto el
9 que deberá ser reemplazado por el 0.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class mensajemilitar {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String mensaje, cod1="",cod2="", caracter;
String ABC="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String numeros="0123456789";
System.out.println("Ingrese el mensaje: ");
mensaje=br.readLine();
System.out.println(""+mensaje);
mensaje=mensaje.toUpperCase();
for (int i = 0; i < mensaje.length(); i++) {
caracter=mensaje.substring(i, i+1);
if(caracter.equals(" ")){
cod1=cod1+caracter;
}
else{
for (int j = 0; j < ABC.length(); j++) {
if(caracter.equals(ABC.substring(j,j+1))){
if(caracter.equals("Z")){
cod1=cod1+"A";
break;
}
else{
cod1=cod1+ABC.substring(j+1,j+2);
break;
}
}
}
for (int k = 0; k <numeros.length(); k++) {
if(caracter.equals(numeros.substring(k,k+1))){
if(caracter.equals("9")){
cod1=cod1+"0";
break;
}
else{
cod1=cod1+numeros.substring(k+1,k+2);
break;
}
}
}
}
}
System.out.println("nMENSAJE INGRESADO: "+mensaje);
System.out.println("CODIGO RESULTANTE "+cod1);
}
}
1. Escriba una función recursiva que imprima en forma invertida los
dígitos de un número entero.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer1 {
public static void invertir(int num){
System.out.print(num%10);
if(num/10!=0){
invertir(num/10);
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
int n;
System.out.println("Ingrese el numero a evaluar: ");
n=Integer.parseInt(br.readLine());
System.out.print("El numero invertido es: ");
invertir(n);
System.out.println();
}
}
2. Escriba una función recursiva que invierta una cadena de
caracteres.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer4 {
public static String invertir(String cad, int tama){
String c2="";
if(tama==0){
c2+=cad.charAt(tama);
return c2;
}
else{
c2=cad.charAt(tama)+invertir(cad, tama-1);
return c2;
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
int tamaño;
String cadena;
System.out.println("Ingrese la cadena a evaluar: ");
cadena=br.readLine();
tamaño=cadena.length()-1;
System.out.println("La nueva cadena es: "+invertir(cadena, tamaño));
}
}
3. Diseñe una función recursiva exponente tal que dada la base y el
exponente como números enteros devuelva su resultado. Validar que
la base será mayor que cero y el exponente mayor o igual que cero.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer5 {
public static int exponente(int base, int exp){
if(exp==0){
return 1;
}
else{
return base*exponente(base,exp-1);
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
int n, b;
do{
System.out.println("Ingrese el numero: ");
n=Integer.parseInt(br.readLine());
}while(n<=0);
do{
System.out.println("Ingrese la base: ");
b=Integer.parseInt(br.readLine());
}while(b<0);
System.out.println("El resultado es: "+exponente(n, b));
}
}
4. Programar un algoritmo recursivo que permita sumar los elementos
de un vector.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer6 {
public static int vector(int A[], int num){
if(num==0){
return A[num];
}
else{
return A[num]+vector(A,num-1);
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
int V[], n;
System.out.println("Ingrese el tamaño: ");
n=Integer.parseInt(br.readLine());
V=new int[n];
for(int i=0;i<n;i++){
System.out.println("V ["+i+"] = ");
V[i]=Integer.parseInt(br.readLine());
}
System.out.println("La suma de los elementos es: "+vector(V,n-1));
}
}
5. Escribir una función recursiva que tenga un argumento de tipo entero
y que devuelva la letra P si el número es positivo y la letra N si el
número es cero o negativo.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer8 {
public static char valor(int numero){
if(numero<=0){
return 'N';
}
else{
return 'P';
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
int n;
char v;
System.out.println("Igrese el numero: ");
n=Integer.parseInt(br.readLine());
v=valor(n);
if(v=='P'){
System.out.println("El numero es positivo");
}
else{
System.out.println("El numero es negativo");
}
}
}
6. Escriba una función recursiva que sume los (n) primeros números
enteros positivos.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer3 {
public static int sumar(int a){
if(a>0){
return a+sumar(a-1);
}
else{
return 0;
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
int n;
System.out.println("INgrese la cantidad de numeros a sumar: ");
n=Integer.parseInt(br.readLine());
System.out.println("La suma es: "+sumar(n));
}
}
7. Escriba una función recursiva muestre la SERIE DE FIBONACCI,
ingresando el número de términos.
SOLUCIÓN:
import java.util.Scanner;
public class Ejer9 {
public static int fibonaci(int numero){
if(numero==0||numero==1){
return 1;
}
else{
return fibonaci(numero-1)+fibonaci(numero-2);
}
}
public static void main(String[] args) {
Scanner b=new Scanner(System.in);
int n, i;
System.out.println("Ingrese la cantidad de terminos: ");
n=b.nextInt();
for(i=0;i<n;i++){
System.out.print(fibonaci(i)+" ");
}
System.out.println("");
}
}

JAVAX

  • 1.
    1. Construir unaaplicación en el que el usuario proporcione una cantidad entera y la aplicación indique através de un mensaje la cantidad si es positiva o negativa, par o impar: o en su defecto si es neutra. import java.util.Scanner; public class EVALUARNUMERO { public static void main(String[] args) { Scanner teclado=new Scanner(System.in); int numero; EVALUARNUMERO N=new EVALUARNUMERO(); System.out.println("Ingrese el numero: "); numero=teclado.nextInt(); System.out.println("nEL NUMERO INGRESADO ES: "); N.NumeroImpar(numero); N.NumeroNegativo(numero); N.NumeroNeutro(numero); N.NumeroPar(numero); N.NumeroPositivo(numero); } public void NumeroPar(int numero){ if(numero%2==0){ System.out.println("Numero Par"); } } public void NumeroImpar(int numero){ if(numero%2!=0){ System.out.println("Numero Impar"); } } public void NumeroNegativo(int numero){ if(numero<0){ System.out.println("Numero Negativo"); } } public void NumeroPositivo(int numero){ if(numero>0){ System.out.println("Numero Positivo"); } } public void NumeroNeutro(int numero){ if(numero==0){
  • 2.
    System.out.println("Numero Neutro"); } } } EJERCICIOS RESUELTOS 1.Ingrese un número entero y encuentre el dígito mayor y el dígito menor. SOLUCIÓN: import java.util.Scanner; public class MAYORMENOR { public static void main(String[] args) { Scanner b=new Scanner(System.in); int n, mayor=0, menor=10, digito; System.out.println("Ingrese el numero a evaluar: "); n=b.nextInt(); while(n>0){ digito=n%10; n=n/10; if(digito>=mayor){ mayor=digito; } if(digito<menor){ menor=digito; } } System.out.println("El digito mayor es: "+mayor); System.out.println("El digito menor es: "+menor); } } 2. En una tienda se ha establecido la siguiente oferta: por compras menores a 50 soles se hace un descuento de 8%, pero para compras a partir de 50 el descuento es de 10%. Se pide ingresar la cantidad y el precio del
  • 3.
    producto que secompra y determinar cuanto se descontará y cuanto se cobrará. SOLUCIÓN: import java.util.Scanner; public class EJERCICIO3 { public static void main(String[] args) { Scanner consola=new Scanner(System.in); double cantidad, precio,pago, descuento; System.out.println("ingresar cantidad: "); cantidad=consola.nextInt(); System.out.println("ingrese el precio: "); precio=consola.nextInt(); pago=cantidad*precio; if(pago<50){ descuento=pago*0.08; pago=pago-descuento; System.out.println("el descuento es: "+descuento+" , el pago a realizar es: "+pago); } else{ descuento=pago*0.1; pago=pago-descuento; System.out.println("el descuento es: "+descuento+" , el pago a realizar es: "+pago); } } } EJERCICIOS RESUELTOS 1. Diseñe un algoritmo para un cajero automático. El cajero tiene la particularidad de dar solamente billetes de 500, 200, 100, 50, y 20. Si el usuario ingresa una cantidad menor a 1500 que desea retirar, debe arrojarle la cantidad mínima de billetes de cada tipo.
  • 4.
    NOTA: No debedar billetes de 10 soles, POR EJEMPLO, si se le ingresa un monto de 510, debe arrojarme: Billetes de 200: 2 Billetes de 50: 1 Billetes de 20: 3 SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class CAJERO2 { public static void main(String[] args) throws IOException{ BufferedReader consola = new BufferedReader(new InputStreamReader(System.in)); int monto, i, b1 = 0, b2=0, b3=0, b4=0, b5=0, b500, b200, b100, b50, b20; do{ System.out.println("Ingrese un monto MENO O IGUAL a 1500: "); monto=Integer.parseInt(consola.readLine()); }while((monto<=30||monto>1500)||monto%10!=0); while(monto>=20){ if(monto>=500&&(monto!=510&&monto!=530)){ if(monto>1000){ b1+=(int)monto/500; monto=monto-b1*500; } else{ if(monto%500!=30&&monto%500!=10){ b1+=(int)monto/500; monto=monto-b1*500; } } } if(monto>=200&&(monto%200>=10||monto%200==0)){ if(monto>410){ b2+=(int)monto/200; monto=monto-b2*200; } else{ if(monto%200!=30&&monto%200!=10){ b2+=(int)monto/200; monto=monto-b2*200; } }
  • 5.
  • 6.
    } if(b5>0){ System.out.println("Billetes de 20:"+b5); } } } 2. Ingrese un número BINARIO (número compuesto por ceros y unos), y muestre su equivalente. Pr ejemplo, si ingreso 101101, debe mostrarme 45 como su equivalente. SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class EnteroBinario { public static void main(String[] args) throws IOException{ BufferedReader consola=new BufferedReader(new InputStreamReader(System.in)); int i, j, k=0, equivalente=0, numero, b=0; boolean m = false; String N; do{ System.out.println("Ingrese el numero entero binario: "); numero=Integer.parseInt(consola.readLine()); N=Integer.toString(numero); for(i=0;i<N.length();i++){ if(N.charAt(i)=='0'||N.charAt(i)=='1'){ m=true; b++; } } }while(b<N.length()); j=numero; while(numero>0){ numero=(int)numero/10; k++; } for(i=0;i<k;i++){ equivalente+=(j%10)*Math.pow(2,i); j=(int)j/10;
  • 7.
    } System.out.println("El equivalente delnumero ingresado es: "+equivalente); } } 3. Un número se considera perfecto cuando la suma de sus divisores es igual al número, por ejemplo 28, tiene como divisores a 1, 2, 4, 7 y 14. Luego 28 es número perfecto, pues 1+2+4+7+14=28. Hacer un algoritmo para determinar si un número ingresado por teclado es perfecto. SOLUCIÓN: import java.util.Scanner; public class perfecto { public static void main(String[] args) { Scanner b=new Scanner(System.in); int n, suma=1,i=2; System.out.println("Ingrese el numero: "); n=b.nextInt(); while(i<n){ if(n%i==0){ suma=suma+i; } i++; } if(suma==n){ System.out.println("El numero es perfecto"); } else{ System.out.println("el numero no es perfecto"); } } } 4. La tribuna de un estadio esta numerada del 1 al 500 en la parte superior horizontal que corresponde al número de asiento por columna; y del 1 al 50 en la parte izquierda vertical que corresponde al número de asiento por fila. Los boletos tienen una numeración correlativa del 1 al 25000. Para cualquier número de boleto determinar el número de fila y el número de columna que le correspondería a la ubicación de su asiento.
  • 8.
    SOLUCIÓN: import java.util.Scanner; public classAsientoestadio { public static void main(String[] args) { Scanner teclado=new Scanner(System.in); int asiento, fila=0, columna=0; System.out.println("Ingrese el numero de asiento: "); asiento=teclado.nextInt(); while(asiento>500){ fila++; asiento=asiento-500; } fila++; columna=asiento; System.out.println("El asiento corresponde a la fila: "+fila+" y a la columna: "+columna); } } 5. Diseñe un algoritmo que convierte un número en base 10, a otro número en base menor que 10. El número en base 10 y la base a la que se va a convertir se deben ingresar por teclado. SOLUCIÓN: import java.util.Scanner; public class ConvierteNumeroAbaseMenora10 { public static void main(String[] args) { Scanner teclado=new Scanner(System.in); int base, numero,div=0,i=1; System.out.println("Ingrese el numero en base 10: "); numero=teclado.nextInt(); do{ System.out.println("Ingrese la base menor a 10 : "); base=teclado.nextInt(); }while(base<=1||base>=10); while(numero>=base){ div=div+(numero%base)*i; numero=(int)(numero/base); i=i*10;
  • 9.
    } div=div+(numero*i); System.out.println("el numero enbase "+base+" es: "+div); } } EJERCICIOS RESUELTOS 1. Ingrese un numero entero menor o igual a 4 cifras y muestre como se lee SOLUCIÓN: import java.util.Scanner; public class escritura { public static void main(String[] args) { Scanner teclado=new Scanner(System.in); int n=0, con=0,n2=0, n1; String numero,mensaje="", m1="DIEZ", m2="ONCE", m3="DOCE", m4="TRECE", m5="CATORCE", M6="QUINCE", m7="VEINTE", m8="VEINTI"; String[] naturales={"","UNO","DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO"," NUEVE"}; String[] diez={"","ONCE","DOCE","TRECE","CATORCE","QUINCE"}; String[] decenas={"","DIEZ","VEINTE","TREINTA","CUARENTA","CINCUENTA","SESENTA", "SETENTA","OCHENTA","NOVENTA"}; String[] centenas={"","CIEN","DOSCIENTOS","TRESCIENTOS","CUATROCIENTOS","QUINI ENTOS","SEISCIENTOS","SETECIENTOS","OCHOCIENTOS","NOVECIENTOS"}; do{ System.out.println("Ingrese el numero a evaluar:"); numero=teclado.next(); }while(numero.length()>4); con=numero.length(); n1=Integer.parseInt(numero.substring(con-3,con));
  • 10.
    n2=Integer.parseInt(numero.substring(con-2,con)); for (int i= 0; i <numero.length() ; i++) { n=Integer.parseInt(numero.substring(i,i+1)); if(con==4){ if(n>1) mensaje=naturales[n]+" MIL"+mensaje; else mensaje=" MIL"+mensaje; } else{ if(con==3){ if(n==1&&n2>0){ mensaje=mensaje+" CIENTO"; } else{ if(n>1){ mensaje=mensaje+" "+centenas[n]; }else{ if(n!=0) mensaje=mensaje+" CIEN"; else mensaje=mensaje+""; } } } else{ if(con==2){ if(n2<10){ mensaje=mensaje+" "+naturales[n2]; break; } else{ if(n2>10&&n2<16){ mensaje=mensaje+" "+diez[n2%10]; break; } else{ if(n2>15&&n2<20){ mensaje=mensaje+" "+"DIECI"; } if(n2>20&&n2<30){ mensaje=mensaje+" "+"VEINTI"; }
  • 11.
    } if(n2%10==0){ mensaje=mensaje+" "+decenas[n]; break; } else{ if(n2>30) mensaje=mensaje+" "+decenas[n]; } } } else{ if(n2>30) mensaje=mensaje+"Y "+naturales[n]; else mensaje=mensaje+naturales[n]; } } } con--; } System.out.println("El numero se lee: "+mensaje); } } 2. Realice un algoritmo para convertir unidades de medida. SOLUCIÓN: import java.util.*; public class Manejador2 { public static void main(String[] args) { Scanner teclado=new Scanner(System.in); String[][] matriz={ {"GIGA","MEGA","1000"}, {"MEGA","KILO","1000"}, {"KILO","HECT","10"}, {"HECT","DECA","10"}, {"DECA","****","10"}, {"****","DECI","10"}, {"DECI","CENT","10"}, {"CENT","MILI","10"}, {"MILI","MICR","1000"},
  • 12.
    {"MICR","NANO","1000"}, }; String Ubase, Usalida,UE="",US= "", C1,C2, E, S; int n, con=0; double resultado=1, canti = 0; System.out.println("Ingrese la cantidad a convertir:"); n=teclado.nextInt(); System.out.println("Ingrese la base: "); Ubase=teclado.next(); System.out.println("Ingrese la salida: "); Usalida=teclado.next(); E=Ubase.substring(0,4); S=Usalida.substring(0,4); if(E.equals("METR")||E.equals("GRAM")||E.equals("LITR")){ E="****"; } if(S.equals("METR")||S.equals("GRAM")||S.equals("LITR")){ S="****"; } C1=E; C2=S; for (int i = 0; i < matriz.length; i++) { for (int j = 0; j < matriz[0].length; j++) { if(matriz[i][0].equals(E)){ UE=matriz[i][0]; US=matriz[i][1]; canti=Double.parseDouble(matriz[i][2]); con++; break; } else{ break; } } if(US.equals(S)){ resultado=resultado*canti; break; } else{ if(con>0){ resultado=resultado*canti; E=US; con=0; }
  • 13.
    } } if(!US.equals(S)||UE.length()<=0){ resultado=1; for (int i= matriz.length-1; i >=0; i--) { for (int j = 0; j < matriz[0].length; j++) { if(matriz[i][1].equals(C1)){ UE=matriz[i][1]; US=matriz[i][0]; canti=Double.parseDouble(matriz[i][2]); con++; break; } else{ break; } } if(US.equals(C2)){ resultado=resultado/canti; break; } else{ if(con>0){ resultado=resultado/canti; C1=US; con=0; } } } } if(US.equals(C2)) System.out.println("nEl resultado es: "+resultado*n+" "+Usalida); else System.out.println("nNo se puede realizar la conversion"); } } EJERCICIOS RESUELTOS 1. Leer una frase y encontrar la palabra de mayor longitud. El programa debe imprimir la palabra como el número de caracteres de la misma
  • 14.
    SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; importjava.io.InputStreamReader; public class Ejerc12 { public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int i, c=0; String cadena, palabra="", mostrar = null; System.out.println("Ingrese la cadena: "); cadena=br.readLine(); cadena+=" "; for(i=0;i<cadena.length();i++){ palabra=palabra+cadena.charAt(i); if(cadena.charAt(i)==' '){ if(palabra.length()-1>c){ c=palabra.length()-1; mostrar=palabra.trim(); } palabra=""; } } System.out.println("La palabra de mayor longitud es: "+mostrar); System.out.println("Su longitud es: "+c); } } 2. Ingresar una cadena y determinar cuantas palabras se encuentran en la cadena. Cada palabra se separa por medio de un espacio en blanco. SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ejerc11 { public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  • 15.
    int i, con=1; Stringcadena, palabra=""; System.out.println("Ingrese la cadena a evaluar: "); cadena=br.readLine(); for(i=0;i<cadena.length();i++){ if(cadena.charAt(i)==' '){ con++; } } System.out.println("La cadena contiene "+con+" palabras"); } } 3. Ingresar un número telefónico en formato de cadena y luego lo convierta de la siguiente manera: Número Telefónico: 5256284000 Nueva Cadena: (52)-5-6284000 SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ejerc15 { public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int i; String cadena,c1="", c2="", c3=""; System.out.println("Ingrese la cadena a evaluar: "); cadena=br.readLine(); for(i=0;i<cadena.length();i++){ if(i<2){ c1=c1+cadena.charAt(i); } else{ if(i==2){ c2+=cadena.charAt(i); } else{
  • 16.
    c3+=cadena.charAt(i); } } } System.out.println("la nueva cadenaes: n"+"("+c1+")"+"-"+c2+"-"+c3); } } 4. Hacer un programa que al recibir como datos dos cadenas de caracteres forme una tercera cadena intercalando los caracteres de las palabras de las cadenas recibidas. SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ejerc16 { public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int i, j, k=0; String cadena1, cadena2, cadena3=""; System.out.println("Ingrese la primera cadena: "); cadena1=br.readLine(); System.out.println("Ingrese la segudna cadena: "); cadena2=br.readLine(); for(i=0;i<cadena1.length();i++){ cadena3+=cadena1.charAt(i); for(j=k;j<cadena2.length();j++){ cadena3+=cadena2.charAt(j); j=cadena2.length(); k++; } } System.out.println("La cadena intercalada es: "+cadena3); } } 5. Ingrese un texto e indique que letras no han aparecido en el texto.
  • 17.
    SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; importjava.io.InputStreamReader; public class Ejerc20 { public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int ini, con=0; String texto, nueva="", mensaje=""; System.out.println("Ingrese el texto a evaluar: "); texto=br.readLine(); for(ini=0;ini<texto.length();ini++){ if(texto.charAt(ini)!=' '){ nueva=nueva+texto.charAt(ini); } } nueva=nueva.toLowerCase(); for(char caracter='a';caracter<='z';caracter++){ for(ini=0;ini<nueva.length();ini++){ if(caracter==nueva.charAt(ini)){ con++; } } if(con==0){ mensaje+=caracter+" "; } con=0; } System.out.println("nLos caracteres que faltan son: n"+mensaje); } } 6. Ingrese un texto e indique el porcentaje de palabras que tiene menos de 5 caracteres y el porcentaje de palabras con 5 o más caracteres. SOLUCIÓN: import java.io.BufferedReader;
  • 18.
    import java.io.IOException; import java.io.InputStreamReader; publicclass Ejerc21 { public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int i; double porcentaje1, porcentaje2, con=0, p5=0, p6=0; String texto, palabra=""; System.out.println("Ingrese el texto a evaluar: "); texto=br.readLine(); texto=texto+" "; for(i=0;i<texto.length();i++){ palabra+=texto.charAt(i); if(texto.charAt(i)==' '){ palabra=palabra.trim(); if(palabra.length()<5){ p5++; } else{ p6++; } palabra=""; con++; } } porcentaje1=(double)((p5/con)*100); porcentaje2=(double)((p6/con)*100); System.out.println("El porcentaje de palabras con menos de 5 caracteres es: "+porcentaje1+" %"); System.out.println("El porcentaje de palabras con 5 o mas caracteres es: "+porcentaje2+" %"); } } 7. Escriba un programa que lea una frase y a continuación visualice cada palabra de la frase en columnas, seguida del número de letras que tiene cada palabra. SOLUCIÓN:
  • 19.
    import java.io.BufferedReader; import java.io.IOException; importjava.io.InputStreamReader; public class Ejerc23 { public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int i, j; String frase, palabra="", nueva=""; System.out.println("Ingrese la frase a evaluar: "); frase=br.readLine(); frase+=" "; for(i=0;i<frase.length();i++){ palabra+=frase.charAt(i); if(frase.charAt(i)==' '){ palabra=palabra.trim(); nueva=palabra; for(j=0;j<nueva.length();j++){ System.out.println("t"+nueva.charAt(j)); } System.out.println("t"+nueva.length()+"nn"); palabra=""; } } } } 8. Escriba un programa que calcule la frecuencia de aparición de las vocales de un texto porcionado por el usuario. Esta solución se debe presentar en forma de histograma, por ejmplo: a 15 *************** e 8 ******** SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ejerc24 { public static void main(String[] args) throws IOException{
  • 20.
    BufferedReader br=new BufferedReader(newInputStreamReader(System.in)); int i, c1=0, c2=0,c3=0, c4=0, c5=0; String texto, m1="", m2="", m3="", m4="", m5=""; System.out.println("Ingrese el texto a evaluar: "); texto=br.readLine(); texto=texto.toLowerCase(); for(i=0;i<texto.length();i++){ if(texto.charAt(i)=='a'){ c1++; m1+="*"; } if(texto.charAt(i)=='e'){ c2++; m2+="*"; } if(texto.charAt(i)=='i'){ c3++; m3+="*"; } if(texto.charAt(i)=='o'){ c4++; m4+="*"; } if(texto.charAt(i)=='u'){ c5++; m5+="*"; } } System.out.println(""); System.out.println("a"+" "+c1+" "+m1); System.out.println("e"+" "+c2+" "+m2); System.out.println("i"+" "+c3+" "+m3); System.out.println("o"+" "+c4+" "+m4); System.out.println("u"+" "+c5+" "+m5); } } 9. Escribir un programa que cuente el número de palabras en un texto, que tengan al menos cuatro vocales diferentes. SOLUCIÓN:
  • 21.
    import java.io.BufferedReader; import java.io.IOException; importjava.io.InputStreamReader; public class Ejerc25 { public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int i, con=0, c1=0, c2=0, c3=0, c4=0, c5=0, vocales; String texto, palabra=""; System.out.println("Ingrese la palabra a evaluar: "); texto=br.readLine(); texto=texto.toLowerCase(); texto+=" "; for(i=0;i<texto.length();i++){ palabra+=texto.charAt(i); if(texto.charAt(i)==' '){ palabra=palabra.trim(); for(int j=0;j<palabra.length();j++){ if(palabra.charAt(j)=='a'){ c1++; if(c1>1){ c1=1; } } if(palabra.charAt(j)=='e'){ c2++; if(c2>1){ c2=1; } } if(palabra.charAt(j)=='i'){ c3++; if(c3>1){ c3=1; } } if(palabra.charAt(j)=='o'){ c4++; if(c4>1){ c4=1; }
  • 22.
    } if(palabra.charAt(j)=='u'){ c5++; if(c5>1){ c5=1; } } } palabra=""; vocales=c1+c2+c3+c4+c5; c1=0; c2=0; c3=0;c4=0; c5=0; if(vocales>=4){ con++; } } } System.out.println("Las palabras son: "+con); } } 10. Un grupo de inteligencia militar desea codificar los mensajes secretos de tal forma que no puedan ser interpretados con una lectura directa, para lo cual han establecido las siguientes reglas: a) Todo mensaje debe estar sus letras en mayúsculas. b) Reemplazar cada letra por la que sigue según abecedario, excepto Z que se deberá reemplazar con la letra A. c) reemplazar cada dígito encontrado por el siguiente numero excepto el 9 que deberá ser reemplazado por el 0. SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class mensajemilitar { public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String mensaje, cod1="",cod2="", caracter; String ABC="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; String numeros="0123456789";
  • 23.
    System.out.println("Ingrese el mensaje:"); mensaje=br.readLine(); System.out.println(""+mensaje); mensaje=mensaje.toUpperCase(); for (int i = 0; i < mensaje.length(); i++) { caracter=mensaje.substring(i, i+1); if(caracter.equals(" ")){ cod1=cod1+caracter; } else{ for (int j = 0; j < ABC.length(); j++) { if(caracter.equals(ABC.substring(j,j+1))){ if(caracter.equals("Z")){ cod1=cod1+"A"; break; } else{ cod1=cod1+ABC.substring(j+1,j+2); break; } } } for (int k = 0; k <numeros.length(); k++) { if(caracter.equals(numeros.substring(k,k+1))){ if(caracter.equals("9")){ cod1=cod1+"0"; break; } else{ cod1=cod1+numeros.substring(k+1,k+2); break; } } } } } System.out.println("nMENSAJE INGRESADO: "+mensaje); System.out.println("CODIGO RESULTANTE "+cod1); } }
  • 24.
    1. Escriba unafunción recursiva que imprima en forma invertida los dígitos de un número entero. SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ejer1 { public static void invertir(int num){ System.out.print(num%10); if(num/10!=0){ invertir(num/10); } } public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int n; System.out.println("Ingrese el numero a evaluar: "); n=Integer.parseInt(br.readLine()); System.out.print("El numero invertido es: "); invertir(n); System.out.println(); } } 2. Escriba una función recursiva que invierta una cadena de caracteres. SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ejer4 { public static String invertir(String cad, int tama){ String c2=""; if(tama==0){
  • 25.
    c2+=cad.charAt(tama); return c2; } else{ c2=cad.charAt(tama)+invertir(cad, tama-1); returnc2; } } public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int tamaño; String cadena; System.out.println("Ingrese la cadena a evaluar: "); cadena=br.readLine(); tamaño=cadena.length()-1; System.out.println("La nueva cadena es: "+invertir(cadena, tamaño)); } } 3. Diseñe una función recursiva exponente tal que dada la base y el exponente como números enteros devuelva su resultado. Validar que la base será mayor que cero y el exponente mayor o igual que cero. SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ejer5 { public static int exponente(int base, int exp){ if(exp==0){ return 1; } else{ return base*exponente(base,exp-1); } } public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  • 26.
    int n, b; do{ System.out.println("Ingreseel numero: "); n=Integer.parseInt(br.readLine()); }while(n<=0); do{ System.out.println("Ingrese la base: "); b=Integer.parseInt(br.readLine()); }while(b<0); System.out.println("El resultado es: "+exponente(n, b)); } } 4. Programar un algoritmo recursivo que permita sumar los elementos de un vector. SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ejer6 { public static int vector(int A[], int num){ if(num==0){ return A[num]; } else{ return A[num]+vector(A,num-1); } } public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int V[], n; System.out.println("Ingrese el tamaño: "); n=Integer.parseInt(br.readLine()); V=new int[n]; for(int i=0;i<n;i++){
  • 27.
    System.out.println("V ["+i+"] ="); V[i]=Integer.parseInt(br.readLine()); } System.out.println("La suma de los elementos es: "+vector(V,n-1)); } } 5. Escribir una función recursiva que tenga un argumento de tipo entero y que devuelva la letra P si el número es positivo y la letra N si el número es cero o negativo. SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ejer8 { public static char valor(int numero){ if(numero<=0){ return 'N'; } else{ return 'P'; } } public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int n; char v; System.out.println("Igrese el numero: "); n=Integer.parseInt(br.readLine()); v=valor(n); if(v=='P'){ System.out.println("El numero es positivo"); } else{ System.out.println("El numero es negativo"); } }
  • 28.
    } 6. Escriba unafunción recursiva que sume los (n) primeros números enteros positivos. SOLUCIÓN: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ejer3 { public static int sumar(int a){ if(a>0){ return a+sumar(a-1); } else{ return 0; } } public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int n; System.out.println("INgrese la cantidad de numeros a sumar: "); n=Integer.parseInt(br.readLine()); System.out.println("La suma es: "+sumar(n)); } } 7. Escriba una función recursiva muestre la SERIE DE FIBONACCI, ingresando el número de términos. SOLUCIÓN: import java.util.Scanner; public class Ejer9 { public static int fibonaci(int numero){ if(numero==0||numero==1){ return 1; }
  • 29.
    else{ return fibonaci(numero-1)+fibonaci(numero-2); } } public staticvoid main(String[] args) { Scanner b=new Scanner(System.in); int n, i; System.out.println("Ingrese la cantidad de terminos: "); n=b.nextInt(); for(i=0;i<n;i++){ System.out.print(fibonaci(i)+" "); } System.out.println(""); } }