Mostrando entradas con la etiqueta boolean. Mostrar todas las entradas
Mostrando entradas con la etiqueta boolean. 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));
    }    
}

lunes, 26 de diciembre de 2016

Funciones: Bisiesto

Escribe una función que debe devolver si el año que se pasa como parámetro es bisiesto o no. (true:bisiesto, false:no bisiesto)
Desde la función principal se pedirá al usuario que introduzca un número de año, se invocará a dicha función con ese número (siempre que esté comprendido entre 1900 y 2100) y después se indicará si dicho año es bisiesto o no en función del valor devuelto por la función.


Ejemplo:
Introduzca un año:
> 1900

El año 1900 NO es bisiesto


SOLUCIÓN EN JAVA:
package bisiestos;

import javax.swing.JOptionPane;

public class Bisiestos {
    
    static boolean bisiesto(int a){
        
        //Un año es bisiesto si es divisible por 4 y por 100 ó es divisible por 400
        return (a%4==0 && a%100!=0) || (a%400==0);        
    }
    
    public static void main(String[] args) {
        boolean resultado;
        int anyo;
        
        try {
            anyo=Integer.parseInt(JOptionPane.showInputDialog(null, "Introduzca un año"));        
            resultado=bisiesto(anyo);
            if (resultado==true){
                JOptionPane.showMessageDialog(null,"El año "+anyo+" SI es bisiesto");
            } else {
                JOptionPane.showMessageDialog(null,"El año "+anyo+" NO es Bisiesto");
            }
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Año incorrecto");
        }            
    }
}

martes, 6 de diciembre de 2016

Adivina un número aleatorio entre 1 y 10

Haz un programa en el que el usuario intente adivinar un número aleatorio generado aleatoriamente por la máquina entre el 1 y el 10.  El usuario tendrá 5 oportunidades para acertar dicho número y el programa irá dando pistas cada vez que el usuario se equivoque de tal forma que si el número introducido por éste es inferior al número aleatorio se informe al usuario de que el número que intenta adivinar es superior y, en caso de que el número introducido sea superior se tendrá que informar al usuario de que el número es inferior.

Ejemplo:
[Número aleatorio generado=6]
Adivina el número, intento(1):
> 3
El número es mayor
Adivina el número, intento(2):
> 7
El número es menor
Adivina el número, intento(3):
> 6
Acertaste!!


SOLUCIÓN EN JAVA:
package adivinaunnumero;

import javax.swing.JOptionPane;

public class AdivinaUnNumero {
    public static void main(String[] args) {
        int NSecreto, XIntentos=5,i,NIntroducido;
        boolean Acertaste=false;
        
        NSecreto=(int)(Math.random()*10+1);
        for (i=1;i<=XIntentos && Acertaste==false;i++){
            NIntroducido=Integer.parseInt(JOptionPane.showInputDialog("Intento("+i+"):"));
            if (NSecreto==NIntroducido){
                Acertaste=true;
            } else {
                if (NIntroducido>NSecreto){
                    JOptionPane.showMessageDialog(null, "Es menor");
                } else {
                    JOptionPane.showMessageDialog(null, "Es mayor");
                }
            }            
        }
        if (Acertaste==true){
            JOptionPane.showMessageDialog(null, "Has acertado");
        } else {
            JOptionPane.showMessageDialog(null, "Has alcanzado el máximo de intentos");
        }             
    } 
}