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

sábado, 21 de enero de 2017

Arrays: Separar pares e impares

Crea un array de 10 elementos con números aleatorios del 1 al 100 y muéstralo por pantalla.
Ahora tendrás que llamar a una función "separaParesImpares" que devolverá otro array ordenado de la siguiente forma: primero aparecerán todos los pares y después todos los impares. Finalmente muestra el array ordenado por pantalla.


Ejemplo:
Array Inicial:
5, 9, 18, 50, 49, 67, 2, 99, 97, 20

Array Ordenado:
18, 50, 2, 20, 5, 9, 49, 67, 99, 97


SOLUCIÓN EN JAVA:
package paresimpares;

import java.util.Arrays;

public class ParesImpares {

    static int[] separaParesImpares(int[] lista){
        int[] nuevo=new int[lista.length];
        int i, posicionNuevoIzq=0, posicionNuevoDer=lista.length-1;
        
        //Hago un recorrido para colocar primero los pares en el nuevo array
        //y al final del array los impares
        for (i=0;i < lista.length;i++){
            if (lista[i]%2==0){
                nuevo[posicionNuevoIzq]=lista[i];
                posicionNuevoIzq++;
            } else {
                nuevo[posicionNuevoDer]=lista[i];
                posicionNuevoDer--;
            }                
        }
        return nuevo;
    }
    
    public static void main(String[] args) {
        int[] elementos=new int[10];
        int i;
        
        //Genero el array con números aleatorios del 1 al 100
        for (i=0;i < elementos.length;i++){
            elementos[i]=(int)(Math.random()*100+1);
        }
        System.out.println("Array antes de ordenar pares e impares: "+Arrays.toString(elementos));
        //Hago la llamada a la función que separa pares e impares y el resultado lo guardo
        //en el mismo array
        elementos=separaParesImpares(elementos);
        System.out.println("Array después de ordenar pares e impares: "+Arrays.toString(elementos));        
    }
}

miércoles, 18 de enero de 2017

Arrays: Elimina un elemento

Crea una función "elimina" que reciba como parámetros un array de números y una posición dentro del array. La función tiene que eliminar el elemento que se encuentre en dicha posición desplazando a la izquierda todos los elementos que haya por encima de dicha posición y devolverá el nuevo array que tendrá un elemento menos.
Desde la función principal tendrás que crear un array de 10 elemento y los inicializas con valores aleatorias entre 1 y 100. Ahora tendrás que pedir al usuario la posición que desea eliminar del array y hacer una llamada a la función "elimina" pasándole el array y la posición para que elimine el elemento que hay en dicha posición.
Imprime el contenido del array antes y después de la llamada a la función "elimina".


Ejemplo:
Array inicial:
15 5 2 90 78 45 32 87 47 5

Introduce posición:
> 5

Array después de haber eleminado la posición 5:
15 5 2 90 45 32 87 47 5


SOLUCIÓN EN JAVA:
package eliminaelemento;

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

public class EliminaElemento {

    static int[] elimina(int[] lista, int posicion){
        int []nuevaLista=new int[lista.length-1];
        int i;
        
        //Primero copio los elementos que hay antes de posición en el nuevo array
        for (i=0;i < posicion-1;i++){
            nuevaLista[i]=lista[i];
        }
        //Y ahora copio los elementos que hay detras de posición en el nuevo array
        //de este forma el único elemento que no copio es el que hay en la posición "posicion"
        for (i=posicion;i < lista.length;i++){
            nuevaLista[i-1]=lista[i];
        }
        return nuevaLista;
    }
    
    public static void main(String[] args) {
       int[] lista=new int[10];
       int i, posicion;
       
       //Genero los 10 números aleatorios para el array
       for (i=0;i < lista.length;i++){
           lista[i]=(int)(Math.random()*100+1);
       }
       //Muestro el array inicial
       System.out.println("Array inicial: "+Arrays.toString(lista));
       System.out.println();
       
       try {
           //Pido al usuario la posición
           posicion=Integer.parseInt(JOptionPane.showInputDialog("Introduce la posición del elemento que quieres eliminar:"));
           //llamo a la función para que elimine dicha posición    
           lista=elimina(lista,posicion);
           //Vuelvo a imprimir la lista
           System.out.println("Array después de haber eliminado la posición "+posicion+": "+Arrays.toString(lista));
       } catch (NumberFormatException e) {
           JOptionPane.showMessageDialog(null, "Formato incorrecto");
       } 
    }
}

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

viernes, 13 de enero de 2017

Arrays: Desplaza a la derecha circularmente

Crea una función de nombre desplazaDerecha, que tomará como parámetro un array de números enteros y desplace una posición hacia la derecha sus elementos: el primero pasa a ser el segundo, el segundo pasa a ser el tercero y así sucesivamente. El último pasa a ser el primero.
Desde la función principal crea un array de 10 números enteros (inicialízalo con valores aleatorios del 1 al 100) y muéstralo por pantalla, después haz una llamada a la función desplazaDerecha para que desplace los elementos del array y posteriormente imprime el array resultante para comprobar que lo ha hecho bien.


Ejemplo:
Array inicial: [38, 16, 1, 5, 8, 77, 52, 29, 10, 70]
Array desplazado: [70, 38, 16, 1, 5, 8, 77, 52, 29, 10]


SOLUCIÓN EN JAVA:
package desplazaderecha;

import java.util.Arrays;

public class DesplazaDerecha {
    
    static void desplazaDerecha(int[] lista){
        int i,ultimo;
        
        //Cojo el último elemento del array y lo guardo en "ultimo"
        ultimo=lista[lista.length-1];
        //desplazo todos los elementos de derecha a izquierda
        //dejando sin hueco en la primera posición
        for(i=lista.length-1; i>0; i--){
            lista[i]=lista[i-1];
        }
        //pongo en la primera posición "ultimo" que rescaté al principio
        lista[0]=ultimo;
    }
    
    public static void main(String[] args) {
        int[] numeros=new int[10];
        int i;
        
        //Inicializo el array con valores aleatorios del 1 al 100
        for (i=0;i < numeros.length;i++)
            numeros[i]=(int)(Math.random()*100+1);
        
        System.out.println("Array inicial: "+Arrays.toString(numeros));
        //desplazo a la derecha el array
        desplazaDerecha(numeros);
        System.out.println("Array desplazado: "+Arrays.toString(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));
       
    }    
}

sábado, 7 de enero de 2017

Arrays: Función para ordenar un array

Escribe una función que reciba como parámetro un array de números enteros y los ordene de menor a mayor en dicho array
Desde la función principal tendrás que generar un array de números enteros aleatorios comprendidos entre 1 y 100, mostrarlos sin ordenar y mostrarlos depués de haber llamado a la función que los ordena.


Ejemplo:
Números sin ordenadar:
4 16 93 86 90 72 76 57 69 71

Números ordenados:
4 16 57 69 71 72 76 86 90 93


SOLUCIÓN EN JAVA:
package ordenararray;

public class OrdenarArray {

    static void ordena(int[] lista){
        int aux,i,j;
        
        for (i=0;i < lista.length;i++){
            for (j=i;j < lista.length;j++){
                //Si el elemento lista[i] es superior a cualquiera que hay detrás de él
                //tenemos que intercambiarlo, de esta forma, al finalizar el bucle anidado
                //el elemento lista[i] será menor que todos los que quedan a su derecha
                if (lista[i]>lista[j]){
                    aux=lista[i];
                    lista[i]=lista[j];
                    lista[j]=aux;
                }
            }
        }
    }
    public static void main(String[] args) {
        int[] numeros=new int[10];
        int i;
        
        for (i=0;i < numeros.length ; i++){
            numeros[i]=(int)(Math.random()*100+1);
        }
        System.out.println("Números sin ordenadar:");
        for (i=0;i < numeros.length; i++){
            System.out.print(numeros[i]+" ");
        }
        System.out.println();
        ordena(numeros);
        System.out.println("Números ordenados:");
        for (i=0;i < numeros.length; i++){
            System.out.print(numeros[i]+" ");
        }
    }
}

martes, 3 de enero de 2017

Arrays: Mezcla dos arrays de números enteros

Inicializa dos arrays (A y B) de 10 números enteros de forma aleatoria con números comprendidos entre el 1 y el 100.
Ahora mézclalos en un tercer array (C) utilizando un bucle de forma que queden: el 1º de A, el 1º de B, el 2º de A, el 2º de B, etc


Ejemplo:
Array A:
12345678910

Array B:
11121314151617181920


Array C:
111212313414515 6167178189191020



SOLUCIÓN EN JAVA:

package mezcladosarrays;

public class MezclaDosArrays {

    public static void main(String[] args) {
        int arrayA[] = new int[10];
        int arrayB[] = new int[10];
        int arrayC[] = new int[20];
        int i;

        //Inicializo y muestro A
        System.out.print("array A: ");
        for (i = 0; i < arrayA.length; i++) {
            arrayA[i] = (int) (Math.random() * 100 + 1);
            System.out.print(arrayA[i] + " ");
        }
        System.out.println();
        
        //Inicializo y muestro B
        System.out.print("array B: ");
        for (i = 0; i < arrayB.length; i++) {
            arrayB[i] = (int) (Math.random() * 100) + 1;
            System.out.print(arrayB[i] + " ");
        }
        System.out.println();
        
        //Ahora voy rellenando C cogiendo las posiciones pares de A y la impares de B
        for (i = 0; i < arrayC.length / 2; i++) {
            arrayC[i * 2] = arrayA[i];
            arrayC[i * 2 + 1] = arrayB[i];
        }
        System.out.println();
        
        //Por último muestro C
        System.out.print("array C: ");
        for (i = 0; i < arrayC.length; i++) {
            System.out.print(arrayC[i] + " ");
        }
    }
}

lunes, 2 de enero de 2017

Arrays: Alternar posiciones de un array

Inicializa un array con 10 números aleatorios del 1 al 100 y debemos mostrarlos en el siguiente orden utilizando un bucle: el primero, el último, el segundo, el penúltimo, el tercero, el antepenúltimo, etc.
Para que el usuario pueda ver el resultado, deberás mostrar el contenido del array justo después de inicializarlo, y un poco más abajo debes mostrar el array ordenado.


Ejemplo:
5 23 2 9 1 7 46 34 90 78

Array Modificado:

5 78 23 90 2 34 9 46 1 7


SOLUCIÓN EN JAVA:
package alternarposicionesarray;

import java.util.Arrays;

public class AlternarPosicionesArray {

   
    public static void main(String[] args) {
        int [] numeros=new int [10];
        int i,a=0;

 //Inicializo los dos arrays con valores aleatorios y lo muestro
 System.out.print("Array original: ");
        for (i=0;i < numeros.length;i++){
            numeros[i]=(int)(Math.random()*100)+1;
            System.out.print(numeros[i]+"  ");            
        }
        System.out.println();
 System.out.print("Array alternado: ");

 //Ahora hago el recorrido para mostrar el array de forma alterna
 //para ello lo voy mostrando por parejas de forma que primero muestro el elemento i
 //y después muestro el elemento numeros.length-1-i   que se corresponden con las 
 //parejas de posiciones [0,9,1,8,2,7,3,6,4,5] 
        for (i=0;i < numeros.length/2;i++){
            System.out.println(numeros[i]+" "+numeros[numeros.length-1-i]+" ");
        }
    }
    
}

domingo, 1 de enero de 2017

Arrays: Media Positivos y Negativos

Inicializa un array con 10 números aleatorios comprendidos entre el -50 y el 50 mostrándolos por pantalla.
A continuación,utilizando otro bucle, realizar la media de los números positivos, la media de los negativos y la suma total.
Y finalmente muestra las medias y la suma total.


Ejemplo:
13 16 -30 -38 0 -47 -27 48 45 -43

Media Positivos: 30.50
Media Negativos: -30.83
Suma Total: -63


SOLUCIÓN EN JAVA:
package arraymediapositivosnegativos;

public class ArrayMediaPositivosNegativos {
    
 public static void main(String[] args) {
        int numeros[]=new int[10];
        int i, sumaTotal=0, positivos=0, negativos=0;
        float mediaPositivos=0, mediaNegativos=0;
        
        //Primero lleno el array con números aleatorios del 1 al 100
        for (i=0;i<numeros.length;i++){
            numeros[i]=(int)(Math.random()*101-50);
            System.out.print(numeros[i]+" ");
        }
        System.out.println();
        //Ahora hago el recorrido del array actualizando las medias y el total
        //según sea el valor del elemento del array evaluado en cada iteración
        for (i=0;i<numeros.length;i++){
            sumaTotal+=numeros[i];
            if (numeros[i]>0){
                mediaPositivos+=numeros[i];
                positivos++;
            }
            else {
                mediaNegativos+=numeros[i];            
                negativos++;
            }
        }
        //Ahora tocal calcular las medias reales dividiendo por el número de elementos
        if (positivos>0) mediaPositivos=mediaPositivos/positivos;
        if (negativos>0) mediaNegativos=mediaNegativos/negativos;
        
        //Mostramos los resultados utilizo el formato %.2f para que imprima 2 decimales
        System.out.printf("Media Positivos: %.2f\n",mediaPositivos);
        System.out.printf("Media Negtivos: %.2f\n",mediaNegativos);
        System.out.printf("Suma Total: %d\n", sumaTotal);
    }    
}

sábado, 31 de diciembre de 2016

Arrays: Suma un segundo

Crea una función llamada "sumaUnSegundo" que reciba como prámetro un array que contenga los tres números que componen una hora:
[horas, minutos, segundos]
y a partir de ahí sume un segundo a dicha hora, de tal forma que se tenga en cuenta que si el secundero llega a 60, tendría que aumentarse
en uno los minutos y poner a 0 los segundos, y lo mismo cuando los minutos llegan a 60 y las horas a 24.
Desde la función principal, se pedirá al usuario los datos de una hora completa (horas, minutos y segundos) y se llamará a dicha función para
comprobar que se ha aumentado un segundo de forma correcta.


Ejemplo:
Hora: 12
Minutos: 23
Segundos: 59

Resultado después de sumar un segundo: 12:24:00

Hora : 14
Minutos: 59
Segundos: 59

Resultado después de sumar un segundo: 15:00:00


SOLUCIÓN EN JAVA:
package arrayhorasminutossegundos;

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

public class ArrayHorasMinutosSegundos {

    static void sumaUnSegundo(int []hora){
        
        hora[2]+=1;
        if (hora[2]==60){
            hora[1]+=1;
            hora[2]=0;
            if (hora[1]==60){
                hora[0]+=1;
                hora[1]=0;
                if (hora[0]==24)
                    hora[0]=0;
            }
        }
    }
    
    public static void main(String[] args) {
        int tiempo[]=new int[3];  //Array de 3 elementos: Horas, minutos y segundos
        int hora,minutos,segundos;
        //Completo la hora con la información que introduzca el usuario        
        try {
            hora=Integer.parseInt(JOptionPane.showInputDialog("Horas:"));
            minutos=Integer.parseInt(JOptionPane.showInputDialog("Minutos:"));
            segundos=Integer.parseInt(JOptionPane.showInputDialog("Segundos:"));
            //Además de comprobar que son números correctos, compruebo que están dentro de los
            //límites adecuados según se trate de horas, minutos o segundos
            if ((hora>=0 && hora<=23) && (minutos>=0 && minutos<=59) && (segundos>=0 && segundos<=59)){
                tiempo[0]=hora;
                tiempo[1]=minutos;
                tiempo[2]=segundos; 
            } else 
                throw new NumberFormatException();
            
                       
            //Primero muestro la hora introducida por el usuario
            System.out.printf("%02d:%02d:%02d\n\n",tiempo[0],tiempo[1],tiempo[2]);
             //Si todo ha ido bien llamo a una función para que aumente un segundo la hora actual
            sumaUnSegundo(tiempo);
            //y de nuevo muestro la hora después de haber sumado un segundo
            System.out.print("Resultado después de sumar un segundo:  ");
            System.out.printf("%02d:%02d:%02d\n",tiempo[0],tiempo[1],tiempo[2]);
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato incorrecto");
        }
    }    
}

martes, 27 de diciembre de 2016

Arrays: Recorridos

Haz una aplicación que cree un array de 10 elementos y los rellene con números aleatorios comprendidos entre el 1 y el 100.
A continuación muestra por consola dicho array, primero de izquierda a derecha, y depués en orden inverso.


Ejemplo:
Orden Directo
61 31 99 77 51 95 58 59 21 98
Orden Inverso
98 21 59 58 95 51 77 99 31 61


SOLUCIÓN EN JAVA:
package recorrearray;

public class RecorreArray {


    public static void main(String[] args) {
       int []lista=new int[10];
       int i;
       
       //Primero relleno el array con números aleatorios del 1 al 100
       for (i=0;i<lista.length;i++)
           lista[i]=(int)(Math.random()*100)+1;
       
       
       //Ahora recorro el array de izquierda a derecha para mostrarlo
       System.out.println("Orden Directo");
       for (i=0;i<lista.length;i++)
           System.out.print(lista[i]+" ");
       
       System.out.println();
       System.out.println("Orden Inverso");
       //Por último hago el recorrido en orden inverso para mostrar los elementos
        for (i=lista.length-1;i>=0;i--)
           System.out.print(lista[i]+" ");
    } 
}

lunes, 26 de diciembre de 2016

Funciones: Dibujar rectángulos

Haz una función "dibujaRectangulo" que reciba como parámetros el ancho y el largo de un rectángulo y lo dibujo por consola utilizando para ello el simbolo "*". Desde la función principal tendrás que hacer una llamada a dicha función con el ancho y el largo del rectángulo, que el usuario introducirá por teclado

Ejemplo:
Introduzca ancho:
> 10
Introduzca largo:
> 3

Rectángulo:
**********
**********
**********



SOLUCIÓN EN JAVA:
package rectangulo;

import javax.swing.JOptionPane;


public class Rectangulo {

    static void dibujaRectangulo(int ancho, int largo){
        int i,j;
        
        for (i=1;i<=largo;i++){
            for (j=1;j<=ancho;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
            
    public static void main(String[] args) {
        int ancho,largo;
        
        try{
            ancho=Integer.parseInt(JOptionPane.showInputDialog("Introduzca ancho: "));
            largo=Integer.parseInt(JOptionPane.showInputDialog("Introduzca largo: "));
            dibujaRectangulo(ancho,largo);
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato Incorrecto");
        }
    }
}

Funciones: Imprime serie numérica

Escribe una función “ImprimeSerie” a la que le pases dos enteros y te escriba por la pantalla todos los valores comprendidos entre ambos. Lo hará en orden ascendente si el primero es menor que el segundo y descendente en caso contrario.
Desde la función principal "main" tendrás que hacer una llamada a dicha función con dos números que tendrás que pedir al usuario.


Ejemplo:
Introduzca el primer valor:
> 5
Introduzca el segundo valor:
> 15

Serie Ascendente:
6, 7, 8, 9, 10, 11, 12, 13, 14



Introduzca el primer valor:
> 85
Introduzca el segundo valor:
> 55

Serie Descendente:
84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56


SOLUCIÓN EN JAVA:
package imprimeserie;

import javax.swing.JOptionPane;

public class ImprimeSerie {

    static void imprimeSerie(int a,int b){
        int i;
        
        if (a>b){
            System.out.print("Serie descendente: ");
            for (i=a-1;i>=b+1;i--){
                System.out.print(i+" ");
            }
        } else {
            System.out.print("Serie ascendente: ");
            for (i=a+1;i<=b-1;i++){
                System.out.print(i+" ");
            }
        }
    }
    
    public static void main(String[] args) {
        int primero,segundo;
        try{
            primero=Integer.parseInt(JOptionPane.showInputDialog("Introduzca el primer valor: "));
            segundo=Integer.parseInt(JOptionPane.showInputDialog("Introduzca el segundo valor: "));
            imprimeSerie(primero,segundo);
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato Incorrecto");
        }
    }
}

Funciones: Mínimo común múltiplo de dos números

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

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

El mínimo común múltiplo de 3 y 9 es 9


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

El mínimo común múltiplo de 6 y 20 es 60


SOLUCIÓN EN JAVA:
package mcm;

import javax.swing.JOptionPane;

public class MCM {
    static int mcm(int a, int b){
        int multiplo;
        
        //Lo primero es seleccionar el mayor de los dos
        if (a>b)
            multiplo=a;
        else
            multiplo=b;
        //Y ahora empiezo a probar si ese número es el mcm o lo son
        //los sucesivos superiores a él
        while (multiplo%a!=0 || multiplo%b!=0)
            multiplo++;
        //Para salir del bucle while, se deben cumplir:
        //- multiplo es un número múltiplo de a y de b simultáneamente        
        return multiplo;
    }
    
    public static void main(String[] args) {
       int valor1, valor2, resultado;
       //Pido al usuario los dos numeros para calcular el mcm:
       try{
           valor1=Integer.parseInt(JOptionPane.showInputDialog("Introduzca primer número:"));
           valor2=Integer.parseInt(JOptionPane.showInputDialog("Introduzca segundo número:"));
           
           //y ahora calculo el mínimo común múltiplo llamando a la función "mcm"
           resultado=mcm(valor1,valor2);
           
           JOptionPane.showMessageDialog(null, "El mínimo común múltiplo de "+valor1+" y "+valor2+" es "+resultado);
       } catch (NumberFormatException e){
           JOptionPane.showMessageDialog(null, "Formato de número incorrecto");
       }
    }       
}

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

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

domingo, 25 de diciembre de 2016

Funciones: Tabla de Multiplicar

Escribe una función que reciba como parámetro el número del que se quiere imprimir la tabla de multiplicar y la muestre por pantalla.
Desde la función prinpipal haz una llamada a dicha función con un número que le pidas al usuario.


Ejemplo:
Introduzca el número del que quiere ver la tabla de multiplicar:
> 5

5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45
5*10=50



SOLUCIÓN EN JAVA:
package funciontablamultiplicar;

import javax.swing.JOptionPane;

public class FuncionTablaMultiplicar {

    static void tablaMultiplicar(int numero){
        int i;
        
        for (i=1;i<=10;i++){
            System.out.println(numero+"*"+i+"="+(numero*i));
        }
    }
    public static void main(String[] args) {
        int num;
        
        try{
            num=Integer.parseInt(JOptionPane.showInputDialog("Introduzca el número del que quiere ver la tabla de multipliar:"));
            tablaMultiplicar(num);
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato Incorrecto");
        }
    } 
}

sábado, 24 de diciembre de 2016

Funciones: Nombre Día Semana

Escribe una función que utiliza la estructura Switch,dicha función debe devolver el nombre del día de la semana en función del valor de una variable dia que se le pasa como parámetro. (1:Lunes, 2:Martes ...)
Desde la función principal se pedira al usuario que introduzca un número, se invocará a dicha función con ese número (siempre que esté comprendido entre 1 y 7) y después se imprimirá el nombre devuelto por la función.


Ejemplo:
Introduzca un número de día:
> 5

El día de la semana correspondiente a 5 es: Viernes



SOLUCIÓN EN JAVA:
package diaSemana;

import javax.swing.JOptionPane;

public class DiaSemana {

    static String diaSemana(int dia){        
        String nombreDia;
        
        switch (dia){
            case 1: nombreDia="Lunes"; break;
            case 2: nombreDia="Martes"; break;
            case 3: nombreDia="Miércoles"; break;
            case 4: nombreDia="Jueves"; break;
            case 5: nombreDia="Viernes"; break;
            case 6: nombreDia="Sábado"; break;
            case 7: nombreDia="Domingo"; break;
            default: nombreDia="Error";
        }
        return nombreDia;    
    }
    
    public static void main(String[] args) {
        int dia;
        
        try {
            dia=Integer.parseInt(JOptionPane.showInputDialog("Introduzca un número de día:"));
            JOptionPane.showMessageDialog(null, "El día de la semana correspondiente a "+dia+" es: "+diaSemana(dia));
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato Incorrecto");
        }        
        System.out.println(diaSemana(1));
    }
}

sábado, 10 de diciembre de 2016

Aprobados y Suspensos

Hacer un programa que lea la nota de 5 alumnos (valores enteros) y mostrar los siguientes porcentajes:

El porcentaje de aprobados.
El porcentaje de suspensos.
El número de alumnos que han obtenido un 10.
El número de alumnos que han obtenido un 0. 

Ejemplo:
Introduzca la nota del alumno 1: 
> 0 
Introduzca la nota del alumno 2: 
> 6 
Introduzca la nota del alumno 3: 
> 3 
Introduzca la nota del alumno 4: 
> 9 
Introduzca la nota del alumno 5: 
> 10 

 %Aprobados = 60 
%Suspensos = 40 
Número de ceros = 1 
Número de dieces = 1


SOLUCIÓN EN JAVA:
package aprobadossuspensos;

import javax.swing.JOptionPane;

public class AprobadosSuspensos {

    public static void main(String[] args) {
        int Naprobados=0,Nsuspensos=0,Nceros=0,Ndieces=0;
        int i,nota;
        //Utilizo una constante para indicar el número de alumnos
        final int NAlumnos=5;
        
        //Utilizo un bucle for para leer las notas de los 5 alumnos
        for (i=1;i<=NAlumnos;i++){
            nota=Integer.parseInt(JOptionPane.showInputDialog("Introduzca la nota del alumno "+i+": "));
            //Distingo si el alumno actual está aprobado comprobando que tenga más de un 4
            if (nota>4){
                Naprobados++;
                //Solo en el caso de que haya aprobado comprobaremos si ha sacado un 10
                if (nota==10){
                    Ndieces++;
                }                
            } else {
                Nsuspensos++;
                //Solo en el caso de que haya suspendido comprobaremos si ha sacado un 0
                if (nota==0){
                    Nceros++;
                }
            }            
        }
        //Ahora mostraré en una ventana emergente todos los calculos solicitados
        String cadena="%Aprobados="+Naprobados*100/NAlumnos+"\n";
        cadena=cadena+"%Suspenso="+Nsuspensos*100/NAlumnos+"\n";
        cadena=cadena+"Número de ceros="+Nceros+"\n";
        cadena=cadena+"Número de dieces="+Ndieces;
        JOptionPane.showMessageDialog(null,cadena );
    }
    
}