lunes, 11 de noviembre de 2013

ESTRUCTURAS REPETITIVAS EN JAVA


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

}

12 comentarios:

  1. Escribir un programa que muestre la lista de los N primeros números enteros positivos y sus correspondientes cuadrados.

    ResponderEliminar
    Respuestas
    1. Una forma:

      import java.util.Scanner;

      public class Numeros {
      private static Scanner leer = new Scanner(System.in);

      public static void main(String[] args) {
      int limite = pideNumero();
      imprimeEnterosyCuadrados(limite);
      }

      private static int pideNumero(){
      System.out.println("Introduzca el numero:");
      int num = 0;
      try{
      num = Integer.parseInt(leer.nextLine());
      if (num < 1) throw new NumberFormatException("El numero ha de ser mayor que 0.");
      }
      catch(NumberFormatException e){
      System.err.println("Entrada Invalida");
      System.err.println(e.getMessage());
      return pideNumero();
      }
      return num;
      }

      private static void imprimeEnterosyCuadrados(int n){
      String enteros = new String();
      String cuadrados = new String();
      for(int i = 0; i <= n; i++){
      enteros+=Integer.toString(i);
      cuadrados += Integer.toString((int)Math.pow(i,2));
      if (i != n){
      enteros+=", ";
      cuadrados += ", ";
      }
      }
      System.out.println(n + " Primeros Numeros enteros: " + enteros);
      System.out.println("Cuadrados de enteros: " + cuadrados);
      }

      }

      Eliminar
  2. quien me ayuda con est algoritmo
    una compañía otorga a sus vendedores la siguiente condición por venta realizada:
    5% cuando la venta es inferior a 500mil
    7.5% cuando la venta esta comprendida entre bs500000 y bs 1000000
    10% cuando la venta es superior a bs 1000000
    realice un algoritmo que lea los siguientes datos por cada venta realizada:
    codigo del vendedor, monto de la venta. cada vendedor tiene varias entradas, tantas como ventas haya realizado en el mes.
    los datos vienen clasificados por vendedor (código)
    elabore un algoritmo que permita imprimir el siguiente informe:
    a.- por vendedor
    codigo del vendedor:xxx
    monto de la venta
    comsion por venta
    b.- por la compañia
    total comisión otorgada por la compañia
    vendedor que tuvo la mayor comision

    ResponderEliminar
  3. Ejercicio Repetitivos
    Nota: Realizar en Java

    1) Cinco miembros de un club contra la obesidad desean saber cuánto han bajado o subido de peso desde la última vez que se reunieron. Para ésto se debe realizar un ritual de pesaje en donde cada uno se pesa en diez básculas distintas para tener el promedio más exacto de su peso. Si existe diferencia positiva entre este promedio de peso y el peso de la última vez que se reunieron, significa que subieron de peso. Pero si la diferencia es negativa, significa que bajaron. Lo que el problema requiere es que por cada persona se imprima un letrero que diga: “SUBIO” o “BAJO” y la cantidad de kilos que subió o bajó.

    ResponderEliminar
  4. Elabore un programa que lea números enteros mientras sean diferentes de 9999 el programa debe escribir
    • la sumatoria de los números leídos.
    • el producto.
    • la cantidad de números leídos.
    • El mayor número leído.
    • El menor número leído.
    • El numero más cercano a 1000.
    hola quien me ayuda con este ejrcicio

    ResponderEliminar
    Respuestas
    1. import java.util.Scanner;
      public class practica1{
      public static void main(String[] args) throws Exception {

      int numero=0, menor = 9999, mayor=0, cantidadnumeros = 0, sumatoria = 0, diferencia=0, cercano=0, difanterior=1000;
      double productodenum = 1;

      Scanner reader = new Scanner(System.in);

      while (numero < 9999){
      System.out.println("Ingrese un valor entero, para finalizar ingrese 9999");

      numero = reader.nextInt();

      if(numero < 9999){

      sumatoria = sumatoria + numero;
      productodenum = productodenum * numero;
      cantidadnumeros = cantidadnumeros + 1;

      if (numero>mayor){
      mayor=numero;

      }
      if(numero= 9999){
      menor = 0;
      productodenum = 0;

      System.out.println("La sumatoria de los números ingresados es: -");
      System.out.println("El producto de los números ingresados es: -");
      System.out.println("La cantidad de números leídos es: - ");
      System.out.println("El número mayor es: - ");
      System.out.println("El número menor es: - ");
      System.out.println("El número más cercano a 1000 es: - ");
      }
      else{

      System.out.println("La sumatoria de los números ingresados es: "+ sumatoria);
      System.out.println("El producto de los números ingresados es: "+ productodenum);
      System.out.println("La cantidad de números leídos es: "+ cantidadnumeros);
      System.out.println("El número mayor es: "+ mayor);
      System.out.println("El número menor es: "+menor);
      System.out.println("El número más cercano a 1000 es: " + cercano);
      }
      reader.close();
      }


      }

      Eliminar
  5. Una encuesta efectuada a los habitantes de una localidad donde se cargaron los datos: Nombre, Edad, sexo (1 hombre , 2 mujer) estado civil ( 1 soltero 2 casado, 3 divorciado)Necesita brindar los siguientes informes respecto a: a) Cuantos habitantes están en edad comprendida entre 20 y 30 años, b) El promedio de edades entre los divorciados

    help¿

    ResponderEliminar
  6. import java.util.Scanner;
    public class practica4 {
    public static void main(String[] args) {
    Scanner reader = new Scanner(System.in);

    String nombre = "";
    int edad, sexo, estadocivil;
    int soltero=0, casado=0, divorciado=0, habitantes, masculino=0, femenino=0, jovenes=0, edaddiv=0;

    System.out.println("Ingrese la cantidad de habitantes encuestados");
    habitantes = reader.nextInt();
    reader.nextLine();

    for(int i=1; i<=habitantes;i++){
    System.out.println("Ingrese el nombre del "+i+"° habitante");
    nombre = reader.nextLine();


    System.out.println("Ingrese la edad");
    edad= reader.nextInt();
    reader.nextLine();

    if(edad >= 20 && edad <=30){
    jovenes = jovenes+1;

    }

    System.out.println("Ingrese el código de sexo, 1 = masculino y 2 = femenino");
    sexo = reader.nextInt();

    while(sexo!=1 && sexo != 2){
    System.out.println("Código incorrecto, ingrese nuevamente");
    sexo = reader.nextInt();
    }
    switch(sexo){
    case 1: masculino = masculino + 1;
    break;
    case 2: femenino = femenino + 1;
    break;
    }

    System.out.println("Ingrese el código estado civil, soltero = 1, casado = 2, divorciado = 3 ");
    estadocivil = reader.nextInt();

    while(estadocivil !=1 && estadocivil !=2 && estadocivil != 3){

    System.out.println("Código incorrecto, ingrese nuevamente");
    estadocivil = reader.nextInt();

    }
    reader.nextLine();
    switch (estadocivil){
    case 1: soltero = soltero + 1;
    break;
    case 2: casado = casado + 1;
    break;
    case 3: divorciado = divorciado + 1;
    edaddiv = edaddiv + edad;
    break;
    }

    }//for

    System.out.println("Hay "+soltero+ " habitantes solteros");
    System.out.println("Existen "+ jovenes+ " habitantes con edades entre 20 y 30 años");
    System.out.println("El promedio de la edad de los habitantes divorciados es: "+promedio(edaddiv, divorciado));

    reader.close();

    }//main

    public static int promedio(int num1, int num2){


    return num1/num2;
    }
    }//class

    ResponderEliminar

  7. Alguien me puede ayudar a resolverlo.
    Crea un programa que pida por teclado el tamaño de un tornillo y muestre por pantalla el texto correspondiente al tamaño, según la siguiente tabla:
    de 1 cm (incluido) hasta 3 cm (no incluido) → pequeño
    de 3 cm (incluido) hasta 5 cm (no incluido) → medio
    de 5 cm (incluido) hasta 6.5 cm (no incluido) → grande
    de 6.5 cm (incluido) hasta 8.5 cm (no incluido) → muy grande

    ResponderEliminar