Las estructuras repetitivas en java, son de gran utilidad cuando necesitamos ejecutar porciones de código reiteradas veces y que finaliza basados en una determinada condición.
EJERCICIOS RESUELTOS EN JAVA
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);
}
}