Upload
juan-pablo-anton
View
34
Download
1
Embed Size (px)
Citation preview
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: 2Billetes de 50: 1Billetes 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","QUINIENTOS","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()+"\n\n"); 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(""); }}