REPETITIVAS EN JAVA




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 arrogarle 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);
    }

}

1 comentario: