Mostrando entradas con la etiqueta while. Mostrar todas las entradas
Mostrando entradas con la etiqueta while. Mostrar todas las entradas

martes, 24 de enero de 2017

Arrays: Buscar siguiente elemento


Crea una función "buscarSiguiente" que reciba tres parámetros:
  • un array de números enteros
  • una posición dentro del array
  • el número que se desea buscar en el array a partir de dicha posición
La función devolverá:
  • un número que indicará la posición del número que se busca, si es que está a partir de la posición dada
  • un -1 si no lo encuentra a partir de la posición dada
Desde la función principal tendrás que crear un array de 20 números enteros aleatorios entre 1 y 10, pedir al usuario un número del 1 al 10 y mostrar en la pantalla las posiciones dentro del array que ocupa dicho número utilizando llamadas sucesivas a la función creada.
Ejemplo:
Introduzca un número del 1 al 10:
> 5

Dentro del array :[1, 9, 6, 9, 9, 3, 6, 1, 8, 9, 5, 8, 2, 5, 2, 1, 8, 9, 6, 10]
El número 5 está en las siguientes posiciones:
Posición: 10
Posición: 13


SOLUCIÓN EN JAVA:
package buscararray;

import java.util.Arrays;
import javax.swing.JOptionPane;

public class BuscarArray {

    static int buscarSiguiente(int[] vector, int posicion, int numero){
        int i;
        boolean encontrado=false;
        
        //Recorro el array a partir de la posición que me indican en el parámetro
        //y me detengo cuanto he encontrado el número buscado
        //o cuando llego al final del array
        //Devolveré la posición del número buscado si es que está o
        //-1 para indicar que no se ha encontrado dicho número
        for (i=posicion ; encontrado==false && i < vector.length; i++){
            if (vector[i]==numero)
                encontrado=true;                        
        }
        if (encontrado)
            return i;
        else
            return -1;
    }
    public static void main(String[] args) {
       int[] vector=new int[20];
       int posicion=0;
       int numero=0;//Este es el número que se desea buscar
       
       for (int i=0;i < vector.length;i++){
           vector[i]=(int)(Math.random()*10+1);
       }
       try {
           numero=Integer.parseInt(JOptionPane.showInputDialog("Introduzca número a buscar"));
       } catch (NumberFormatException e){
           JOptionPane.showMessageDialog(null, "Error de formato");
           System.exit(0);
       }
       System.out.println("Dentro del array :"+Arrays.toString(vector));
       System.out.println("El número "+numero+" está en las siguientes posiciones:");
       do{
           posicion=buscarSiguiente(vector,posicion,numero);
           if (posicion!=-1)
           System.out.println("Posición: "+(posicion-1));
       } while (posicion!=-1);
    }
    
}

miércoles, 18 de enero de 2017

Arrays: Calcula el Máximo Común Divisor de una array de números enteros

Crea una función que reciba como parámetro un array de números enteros y devuelva el máximo común divisor de todos los números que contiene.
Desde la función principal tendrás que crear un array e introducir a mano los números de los que queremos calcular el máximo común divisor, y a continuación tendrás que hacer una llamada a la función creada para finalmente imprimir por pantalla el resultado.


Ejemplo:
Lista de numeros:[12, 6, 18, 24]
Máximo cómun divisor: 6

Lista de numeros:[4, 8, 30, 124]
Máximo cómun divisor: 2


SOLUCIÓN EN JAVA:
package mdc_arrays;

import java.util.Arrays;

public class MDC_Arrays {

    static int mcd(int[] lista){
        int i,menor;
        boolean no_es_mcd=false,probar_siguiente=true;
        
        //Primero obtengo el menor número del array porque empezaremos
        //a probar a dividir por él hacia abajo
        menor=lista[0];
        for (i=1;i < lista.length;i++){
            if (lista[i] < menor){
                menor=lista[i];
            }
        }
        //Ya tengo en la variable "menor" el menor número del array
        
        
        while (probar_siguiente==true){     
            //Ahora tengo que comprobar si "menor" es divisible por todos los números del array
            for (i=0;i < lista.length && no_es_mcd==false;i++){
                if (lista[i]%menor!=0)
                    no_es_mcd=true;
            }
            //Si no lo es, tendré que probar con el siguiente número, que será menor-1
            if (no_es_mcd){
                menor--;
                no_es_mcd=false;
            } else{
                //En caso de que todos los números sean divisible por menor, 
                //salgo del bucle principal while pq ya he encontrado el mcd
                probar_siguiente=false;
            }
        }
                    
        return menor;
    }
    
    public static void main(String[] args) {
        int[] numeros={4,8,30,124};
        
        System.out.println("Lista de numeros:"+Arrays.toString(numeros));
        System.out.println("Máximo cómun divisor: "+mcd(numeros));
    }    
}

miércoles, 11 de enero de 2017

Arrays: Insertar un elemento

Crea una función de nombre "insertaElemento" que reciba un array de enteros, pida por teclado un número y una posición (dentro del array) y lo inserte en ese posición desplazando a la derecha el resto (se perderá el último elemento).
Para probarlo desde la función principal tendrás que declarar un array de 10 elementos (inicialízalo a mano y muéstralo por consola) y llamar a la función"insertaElemento" pasándole dicho array, y después de haberla llamado y que se haya ejecutado, tendrás que mostrar como ha quedado el array después de la inserción.

Ejemplo:
Array inicial: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Inserta posición:
> 5
Inserta elemento:
> 50
Array después de la inserción: [1, 2, 3, 4, 50, 5, 6, 7, 8, 9]


SOLUCIÓN EN JAVA:
package insertaelementoarray;

import java.util.Arrays;
import javax.swing.JOptionPane;

public class InsertaElementoArray {

    static void insertaElemento(int[] lista){
        int i,elemento,posicion;
        
        try {
            do {
                posicion=Integer.parseInt(JOptionPane.showInputDialog("Introduce la posición en la que quieres insertar:"));
                if (posicion<1 || posicion>lista.length)
                    JOptionPane.showMessageDialog(null, "La posición tiene que estar entre 1 y "+lista.length);
            } while (posicion<1 || posicion>lista.length);
            elemento=Integer.parseInt(JOptionPane.showInputDialog("Introduce el elemento que quieres insertar:"));
            //Ahora empieza la inserción:
            //Primero desplazo a la derecha todos los elementos que hay a partir
            //de la posición "posicion-1" (resto 1 porque los arrays empiezan por cero)
            for (i=lista.length-1;i>=posicion;i--)
                lista[i]=lista[i-1];
            lista[i]=elemento;
            
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato incorrecto");
        }
    }
    
    public static void main(String[] args) {
       int[] numeros={1,2,3,4,5,6,7,8,9,10};
       
       System.out.println(Arrays.toString(numeros));
       insertaElemento(numeros);
       System.out.println(Arrays.toString(numeros));
       
    }    
}

lunes, 26 de diciembre de 2016

Funciones: Máximo común divisor de dos números

Crea una función que calcule al máximo común divisor de dos números cualesquiera.
Desde la función principal se tendrá que pedir al usuario dos números y calcular el máximo común divisor haciendo una llamada a la función creada.


Ejemplo:
Introduzca primer número:
> 3
Introduzca segundo número:
> 9

El máximo comun divisor de 3 y 9 es 3


Introduzca primer número:
> 6
Introduzca segundo número:
> 20

El máximo comun divisor de 6 y 20 es 2


SOLUCIÓN EN JAVA:
package mcd;

import javax.swing.JOptionPane;

public class MCD {

    static int mcd(int a, int b){
        int divisor;
        
        //Lo primero es seleccionar el menor de los dos
        if (a>b)
            divisor=b;
        else
            divisor=a;
        //Y ahora empiezo a probar si ese número es el mcd o lo son
        //los sucesivos inferiores a él
        while ((a%divisor!=0 || b%divisor!=0) && divisor>1)
            divisor--;
        //Para salir del bucle while, se deben cumplir una de las dos condiciones:
        //- divisor es un mcd de ambos números
        //- divisor ha llegado a valer 1, con lo cual ése es el máximo común divisor
        return divisor;
    }
    
    public static void main(String[] args) {
       int valor1, valor2, resultado;
       //Pido al usuario los dos numeros para calcular el mcd:
       try{
           valor1=Integer.parseInt(JOptionPane.showInputDialog("Introduzca primer número:"));
           valor2=Integer.parseInt(JOptionPane.showInputDialog("Introduzca segundo número:"));
           
           //y ahora calculo el máximo común divisor llamando a la función "mcd"
           resultado=mcd(valor1,valor2);
           
           JOptionPane.showMessageDialog(null, "El máximo común divisor de "+valor1+" y "+valor2+" es "+resultado);
       } catch (NumberFormatException e){
           JOptionPane.showMessageDialog(null, "Formato de número incorrecto");
       }
    }
    
}

sábado, 24 de diciembre de 2016

Entradas Parque Atracciones

En 'Terra Mítica' se desea saber cuántas personas han pasado en un día.
Deben de decir su edad conforme entren, si su edad es inferior a 4, la entrada es gratis, si la edad está comprendida entre 4 años y 12 años (incluídos), la entrada costará 20€, y si la edad supera a 12, la entrada costará 40€.
La taquilla se cerrará cuando la cajera introduzca una edad igual a -1.
Indicad, el número de niños con edades inferiores a 4 años, el número de niños con edad comprendida entre 4 y 12 años, y el número de adultos.
Muestra también el número total de personas que han entrado y la caja que se ha hecho al final de la jornada.


Ejemplo:
Introduzca edad:
> 20
Introduzca edad:
>34
Introduzca edad:
>17
Introduzca edad:
>2
Introduzca edad:
-1

Bebes:1, Niños:0, Adultos:3
Número de entradas vendidas:4
Caja:120 €


SOLUCIÓN EN JAVA:
package parqueAtracciones;

import javax.swing.JOptionPane;

public class ParqueAtracciones {

   public static void main(String[] args) {

        int bebes=0,ninos=0,adultos=0,edad=0;
        String cadena;
        
        do {
            cadena=JOptionPane.showInputDialog("Introduzca edad");
            try {
                //Dependiendo de la de la edad que se introduzca, se incrementará
                //el contador correspondiente (bebes, ninos y adultos)
                edad=Integer.parseInt(cadena);
                if (edad!=-1){
                    if (edad>=0 && edad<4){
                        bebes++;
                    } else if (edad>=4 && edad<=12){
                        ninos++;
                    } else if (edad>12 && edad<150){
                        adultos++;
                    } else {
                        JOptionPane.showMessageDialog(null, "Introduzca una edad correcta!!");
                    }
                }
            } catch (NumberFormatException e){
                JOptionPane.showMessageDialog(null, "Formato incorrecto!!");
            }
        } while(edad!=-1);
        System.out.println("Bebes:"+bebes+", Niños:"+ninos+", Adultos:"+adultos);
        System.out.println("Número de entradas vendidas:"+(bebes+ninos+adultos));
        System.out.println("Caja:"+(ninos*20+adultos*40)+" €");
    }
    
}

viernes, 23 de diciembre de 2016

Número Invertido

Escriba un programa que pida al usuario un entero de tres dígitos, y entregue el número con los dígitos en orden inverso:

Ejemplo:
Introduzca el número: > 345
El número invertido es: 543

Introduzca el número: >2416
El número invertido es: 6142



SOLUCIÓN EN JAVA:
package numeroinvertido;

import javax.swing.JOptionPane;

public class NumeroInvertido {

    public static void main(String[] args) {
        int numero,i=0,digitos=0;
        String invertido="";
        
        try {
            //Leo el número que quiero invertir
            numero=Integer.parseInt(JOptionPane.showInputDialog("Introduzca el número:"));
            digitos=numero;
            //Utilizo un bucle que va dividiendo por 10 y cogiendo el resto de la división
            //para componer el número invertido
            while (digitos>=1){
                invertido=invertido+digitos%10;
                digitos=digitos/10;
            }
            JOptionPane.showMessageDialog(null, "El número invertido es: "+invertido);
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null,"Formato incorrecto");
        }
    } 
}

domingo, 4 de diciembre de 2016

Menú Sencillo

En este ejercicio haremos un menú muy sencillo.
El menú se mostrará por pantalla y tendrá las siguientes opciones: 

  1. Saludar 
  2. Despedirse 
  3. Salir 
Si el usuario introduce un 1, el programa le pedirá el nombre lo saludará: Hola Pepito
Si el usuario introduce un 2, el programa se despedirá: Adios
Si el usuario introduce un 3, el programa terminará.


SOLUCIÓN EN JAVA:
package menusencillo;
import javax.swing.JOptionPane;
public class MenuSencillo {

    public static void main(String[] args) {
        int opcion = 0;  
        String nombre, valor;

        do {
            valor = JOptionPane.showInputDialog("1.Saludar\n2.Despedida\n3.Salir");
            opcion = Integer.parseInt(valor);
            if (opcion == 1) {
                nombre = JOptionPane.showInputDialog("Introduzca Nombre");
                JOptionPane.showMessageDialog(null, "Hola " + nombre);
            } else if (opcion == 2) {
                JOptionPane.showMessageDialog(null, "Adios");
            }
        } while (opcion != 3);
    }
}