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

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

Calcular Potencias

Realizar un programa que pida la base y el exponente y calcule la potencia

Ejemplo:

Introduzca base:
>3
Introduzca exponente:
>3

Solución: 27


SOLUCIÓN EN JAVA:
package potencias;

import javax.swing.JOptionPane;

public class Potencias {

    public static void main(String[] args) {
        int base,exponente,resultado,i;
        
        try{
            base=Integer.parseInt(JOptionPane.showInputDialog("Introduzca base:"));
            exponente=Integer.parseInt(JOptionPane.showInputDialog("Introduzca exponente:"));
            //Si el exponente es 0, el resultado es 1 sea cual sea la base
            if (exponente!=0){
                resultado=1;
                //Multiplico la base tantas veces como indica el exponente, tanto si es positivo como negativo
                for (i=1;i<=Math.abs(exponente);i++){
                    resultado=resultado*base;
                }
                //Si el exponente es negativo el resultado es 1/resultado
                if (exponente<0){                    
                    JOptionPane.showMessageDialog(null, "Resultado: "+(1/resultado));
                } else {
                    JOptionPane.showMessageDialog(null, "Resultado: "+resultado);
                }
            } else {
                JOptionPane.showMessageDialog(null, "1");
            }
        } catch (Exception ex){
            JOptionPane.showMessageDialog(null, "Formato incorrecto");
        }
    }   
}

jueves, 22 de diciembre de 2016

Divisores de un número

Realizar un programa que pida un número y diga todos sus divisores

Ejemplo:

Introduzca un número:
>12

Los divisores de 12 son: 12, 6, 4, 3, 2, 1


SOLUCIÓN EN JAVA:
package divisores;

import javax.swing.JOptionPane;

public class Divisores {

    public static void main(String[] args) {
        int p,x;
        
        try {
            x=Integer.parseInt(JOptionPane.showInputDialog("Introduzca número:"));
            p=x;
            while (p>0){
                //Serán divisores solo aquellos números cuyo resto de dividir el número original entre p
                //sea 0
                if (x%p==0){
                    System.out.print(p+",");
                }
                p=p-1;
            }
        } catch (Exception e){
            JOptionPane.showMessageDialog(null, "Error de formato");
        }
    }
}

Números Primos

Haz un programa que pida al usuario un número y que diga si es primo o no.
Definición. Un número es primo cuando solamente es divisible por el mismo y por la unidad.

Ejemplo:

Introduzca un número:
>11

El 11 es un número primo


SOLUCIÓN EN JAVA:
package primos;

import javax.swing.JOptionPane;

public class Primos {

    public static void main(String[] args) {
        int p,x;
        
        try {
            x=Integer.parseInt(JOptionPane.showInputDialog("Introduzca número:"));
            //Solo calculamos los primos de números positivos
            if (x>=1){
                p=x-1;
                while (p>=2 && x%p!=0){
                    p=p-1;
                }
                if (p==1 || p==0){
                    JOptionPane.showMessageDialog(null, "Es primo:"+x);
                } else {
                    JOptionPane.showMessageDialog(null, "No es primo:"+x);
                }
            }
        } catch (Exception e){
            JOptionPane.showMessageDialog(null, "Formato incorrecto");
        }
    }
    
}

jueves, 15 de diciembre de 2016

Suma Pares e Impares

Escribe un programa que lea N números, calcule y escriba por pantalla la suma de los pares y la suma de los impares que se han introducido.

Resultado esperado:
Introduzca cuántos números se van a procesar:
>4
Introduzce número 1:
>15
Introduzce número 2:
>2
Introduzce número 3:
>1
Introduzce número 4:
>6

Resultado:
La suma de los pares es: 8
La suma de los impares es:16


SOLUCIÓN EN JAVA:
package sumaparimpar;

import javax.swing.JOptionPane;

public class SumaParImpar {

    public static void main(String[] args) {
        int N,B,NPar=0,NImpar=0,i;
        
        try {
            //Primero pregunto cuanto números hay que procesar
            N=Integer.parseInt(JOptionPane.showInputDialog("Introduzca cuántos números se van a procesar:"));
            //Y ahora hago un bucle para leerlos uno a uno y actulizar los contadores correspondientes
            for (i=1;i<=N;i++){
                B=Integer.parseInt(JOptionPane.showInputDialog("Intoduce nº:"+i));
                if (B%2==0){
                    NPar=NPar+B;  //NPar+=B;                    
                } else {
                    NImpar=NImpar+B; //NImpar+=B;
                }
            }
            //Imprimo el resultado final después del bucle
            System.out.println("Pares:"+NPar);
            System.out.println("Impares:"+NImpar);
        } catch (Exception e){
            JOptionPane.showMessageDialog(null, "Formato incorrecto");
        }        
    }    
}

miércoles, 14 de diciembre de 2016

Secuencia de Finbonacci

Haz un programa que imprima por pantalla los 50 primeros números de la secuencia de Fibonacci

Resultado esperado:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025, 20365011074, 32951280099


SOLUCIÓN EN JAVA:

package fibonaci;

public class Fibonaci {

    public static void main(String[] args) {
        //Utilizo variables de tipo long porque los números pueden ser muy grandes
        long a=1,b=1,c,i;
        
        //Los dos primeros valores se muestran directamente porque son casos especiales
        System.out.print("1 1 ");
        //Utilizo un bucle para contar 50 veces, que es la cantidad de terminos de la secuencia que quiero mostrar
        for (i=1;i<=50;i++){
            //Calculo el siguiente termino como suma de los dos primeros
            c=a+b;
            System.out.print(c+" ");
            //Ahora a pasa a ser b, y b sería el nuevo termino
            a=b;
            b=c;            
        }
    }
}

Factorial

Haz un programa que pida al usuario un número entero y que muestre por pantalla su factorial

Ejemplo:

Introduzca el número del que quiere calcular el factorial: 
> 5 
Solución: 120

 Introduzca el número del que quiere calcular el factorial: 
> 3 
Solución: 6


SOLUCIÓN EN JAVA:
package numerofactorial;

import javax.swing.JOptionPane;

public class NumeroFactorial {


    public static void main(String[] args) {
        int numero,i;
        long resultado=1;
        
        //Le pido al usuario el número
        numero=Integer.parseInt(JOptionPane.showInputDialog("Introduce número del que quieres calcular el factorial:"));        
        //El cero es un caso especial
        if (numero==0){
            JOptionPane.showMessageDialog(null,1);
        } else {
            //Utilizo la variable resultado para calcular el factorial con un bucle que va desde 2 hasta el número a calcular
            for (i=2;i<=numero;i++){
                resultado=resultado*i;                
            }
            //La variable resultado
            JOptionPane.showMessageDialog(null,resultado);            
        }   
    }
}

lunes, 12 de diciembre de 2016

EuroConversor

Se trata de hacer un euroconversor en ambos sentidos, es decir, tendremos un botón para pasar euros a pesetas y otro botón para pasar pesetas a euros. 
Además tendrás que incluir un botón para poder limpiar las casillas donde se introducen los euros y las pesetas.

 En este caso utilizaremos un JFrame con dos cajas de texto y dos botones, algo así:




Descarga el proyecto aquí. (NetBeans)

SOLUCIÓN EN JAVA:
import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class Principal extends javax.swing.JFrame {

    public Principal() {
        initComponents();
    }
                 

    private void BEurosPesetasMouseClicked(java.awt.event.MouseEvent evt) {                                           
        //Leer los euros de la casilla "euros", multiplicar 166,386 
        //y mostrar en la casilla "pesetas"
        float euros,pesetas;
        int pesetas_redondeadas;
        
        try{
            //Leo la información del campo Euros del formulario
            euros=Float.parseFloat(TEuros.getText());
            //Hago la conversión y redondeo
            pesetas=euros*(float)166.386;
            pesetas_redondeadas=Math.round(pesetas);
            //Muestro las pesetas equivalente en el campo Pesetas el formulario
            TPesetas.setText(String.valueOf(pesetas_redondeadas));            
        } catch (NumberFormatException ex){
            JOptionPane.showMessageDialog(rootPane, "Revisa el campo Euros");
        }
      
    }                                          

    private void BPesetasEurosMouseClicked(java.awt.event.MouseEvent evt) {                                           
        float euros,pesetas;
        DecimalFormat formateador;
        String numero;
        
        try{
            //Leo la información del campo Pesetas del formulario
            pesetas=Integer.parseInt(TPesetas.getText());
            //Hago la conversión a euros y redondeo a dos decimales
            euros=pesetas/(float)166.386;
            formateador = new DecimalFormat("###.##");                        
            numero=formateador.format(euros);
            //Hago esta conversión para que ponga un punto de separación de miles en lugar de una ,
            numero=numero.replace(",",".");
            TEuros.setText(numero);
        } catch (NumberFormatException ex){
            JOptionPane.showMessageDialog(rootPane, "Revisa el campo Pesetas");
        }
    }                                          

    private void BLimpiarMouseClicked(java.awt.event.MouseEvent evt) {                                      
        //Pongo los dos cuadros de texto a cero
        TEuros.setText("0.00");
        TPesetas.setText("0");
    }                                     

                
}

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

miércoles, 7 de diciembre de 2016

Media de la notas de una asignatura

Se desea calcular la nota media de la clase de programación, para ello se pedirá al usuario que introduzca el número de alumnos que hay en clase, y a continuación se irán pidiendo las notas individuales (con decimales) para mostrar finalmente la nota media de la clase.

Ejemplo:
Introduzca el número de alumnos:
> 3
Nota del alumno 1:
> 4.5
Nota del alumno 2:
> 7
Nota del alumno 3:
> 9.6

La media de 4 alumnos es: 6.02


SOLUCIÓN EN JAVA:
package medianotas;

import javax.swing.JOptionPane;
import java.text.DecimalFormat;

public class MediaNotas {

    public static void main(String[] args) {
        
        float suma=0,nota,media;
        int numeroAlumnos,i;
        //Utilizo DecimalFormat para que la media salga con dos decimales
        DecimalFormat formateador = new DecimalFormat("####.00");
        
        //Leo el número de alumnos
        numeroAlumnos=Integer.parseInt(JOptionPane.showInputDialog("Introduzca número alumnos"));
        //Sólo si hay algún alumno
        if (numeroAlumnos>0){
            //Pregunto una nota y la añado a la variable "suma" tantas veces como alumnos haya
            for (i=1;i<=numeroAlumnos;i++){
                nota=Float.parseFloat(JOptionPane.showInputDialog("Nota del alumno"+i));
                suma=suma+nota;
            }
            //Calcula la media
            media=suma/numeroAlumnos;
            JOptionPane.showMessageDialog(null, "La media de "+numeroAlumnos+" alumnos es: "+formateador.format(media));
        } else {
            JOptionPane.showMessageDialog(null, "Debe haber algún alumno");
        }
    }    
}

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

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

Suma N números enteros

Haz un programa que pida al usuario un valor N y después vaya sumando los N números que se vayan introduciendo por teclado.

Ejemplo:
Introduzca cuántos números se van a sumar:
> 2
Introduzca el valor para el número 1:
> 4
Introduzca el valor para el número 2:
> 3
El resultado de la suma es: 7

SOLUCIÓN EN JAVA:
package sumannumeros;
import java.util.Scanner;

public class SumaNNumeros {
    public static void main(String[] args) {
        int n,i,numero,suma=0;
        
        //Creo un scanner necesario para leer por teclado
        Scanner sc=new Scanner(System.in);
        //Leo cuántos números se van a introducir
        System.out.print("Introduce cuántos números se van a sumar:");
        n=sc.nextInt();
        //Utilizo un bucle for para leerlos todos
        for (i=1;i<=n;i++){
            System.out.println("Introduzca el valor para el número "+i+":");
            numero=sc.nextInt();
            suma=suma+numero;
        }
        //Al finalizar el bucle ya tendremos el resultado en la variable suma
        System.out.println("La suma de los números es : "+suma);
    }
    
}

Leer dos números por teclado y calcular la suma

Haz un programa que lea por teclado dos números enteros y muestre el resultado de sumarlos.

SOLUCIÓN EN JAVA:
package sumadosnumeros;

import java.util.Scanner;


public class SumaDosNumeros {

    
    public static void main(String[] args) {
       Scanner sc;
       int primero,segundo,resultado;
      
       //Necesario para leer por teclado
       sc = new Scanner(System.in);
       //Leemos el primer número por teclado
       System.out.print("Introduce primer número:");       
       primero = sc.nextInt();   
       //Leemos el segundo número por teclado       
       System.out.print("Introduce primer número:");
       segundo = sc.nextInt();          
      
       //hacemos la suma y la guardamos en la variable resultado
       resultado=primero+segundo;       
       //Ahora mostramos el resultado por pantalla
       System.out.println("La suma de "+primero+" + "+segundo+" = "+resultado);
    }
  
}