Datos personales

miércoles, 15 de octubre de 2014

Calculadora en java Facil de programar

Les comparto una calculadora que hice algunas noches, esta muy facil de hacer, usa pocos metodos y sin recursividad, solo metodos y algunas variables, espero que les guste y si le pueden agregar mas cosas pueden publicarlo.

viernes, 10 de octubre de 2014

JPanel con Imagen en Java

En esta ocasión les enseñare como agregarle una imagen a un jpanel facil, rapido y sencillo, ademas de proveerles una libreria que les ayudara mucho la sencilla tarea de agregar imagenes a un jpanel.





Link Blogg: 

miércoles, 8 de octubre de 2014

Permutacion por medio de Numeros Psudoaleatorios

PERMUTACIONES DE CADENAS

En matemáticas, una permutación es la variación del orden o de la disposición de los elementos de un conjunto.Por ejemplo, en el conjunto {1,2,3}, cada ordenación posible de sus elementos, sin repetirlos, es una permutación. Existe un total de 6 permutaciones para estos elementos: "1,2,3", "1,3,2", "2,1,3", "2,3,1", "3,1,2" y "3,2,1". (Enlace de wikipedia)


El siguiente programa sera elaborado por medio de la obtención del factorial obtenido del numero total de caracteres de la cadena introducida.

Cabe mencionar que este programa esta elaborado de una manera ingeniosa, y es funcional, solo que usa mucho procesador, así que la respuesta puede variar dependiendo de la velocidad de su procesador.


VIDEO



CODIGO




import java.util.Scanner;
import java.util.Vector;

//GENERAR PERMUTACIONES DE CADENAS DE TEXTO
//EN ESTE PROGRAMA SE REALIZARA UTILIZANDO LA LIBRERIA MATH
//SE PREGUNTARAN COMO SERA ESO POSIBLE, PUES EN UN MOMENTO LO VEREMOS

//MORADOMX = Yhosimar Martinez MArcial

public class Permutaciones
{
//CREAMOS UNA VARIABLE TIPO STRING ESTATICA, YA QUE LA USAREMOS EN 
//METODOS POSTERIORES Y DENTRO DEL MAIN, AL SER EL MAIN UN METODO ESTATICO
//LAS VARIABLES GLOBALES DEBEN SER TAMBIEN ESTATICAS.
static String cadena="";
static int factorial=0;
static Vector permutaciones=new Vector();//AQUI SE GUARDARAN LAS PERMUTACIONES
public static void main(String[] args) 
{
//PRIMERO SOLICITAREMOS UNA CADENA DE TEXTO
//PARA ESTO USAREMOS SCANNER
Scanner teclado=new Scanner(System.in);
System.out.println("INTRODUCE UNA CADENA");
cadena=teclado.nextLine();
// VERIFICAREMOS QUE NO EXISTA NINGUN CARACTER REPETIDO EN LA CADENA
//SI EXISTE UN CARACTER REPETIDO EL PROGRAMA SE TERMINARA.
boolean repite=false;
for(int i=0;i<cadena.length();i++)
{
int cont=0;
for(int j=0;j<cadena.length();j++)
{
if(cadena.charAt(j)==cadena.charAt(i))
{
cont++;
}
}
if(cont>1)
{
repite=true;
}
}
if(repite==true)
{
System.out.print("LA CADENA CONTIENE CARACTERES REPETIDOS.");
//EL PROGRAMA ACABARIA AKI, SIN NECESIDAD DE ESCRBIR NADA MAS,
//SIN EMBARGO AGREGAREMOS UNA INSTRUCCION MAS, PARA OBLIGAR AL 
//PROGRAMA A TERMINAR, ESTA INSTRUCCION PUEDE SERVIRLES EN OTRO MOMENTO
System.exit(0);//CONESTA INSTRCCION EL PROGRAMA MUERE Y CON EL TODOS LOS HILOS
//QUE SE PUDIERAN HABER DESPRENDIDO DE EL.
}
else if(repite==false)
{
factorial();
for(int i=0;i<permutaciones.size();i++)
{
System.out.println((i+1)+" = "+permutaciones.get(i).toString());//SE MANDA A IMPRIMIR EN
//PANTALLA LAS PERMUTACIONES.
}
}
}
public static void factorial()//CREAREMOS UN METODO PARA OBTENER EL FACTORIAL
//DEL NUMERO TOTAL DE CARACTERES QUE CONTIENE LA CADENA
{
factorial=cadena.length();
for(int i=cadena.length()-1;i>0;i--)//COMUNMENTE ASI SE ESCRIBE UN FOR
//SIN EMBARGO TAMBIEN SE PUEDE HACER QUE DECREMENTE.
{
factorial*=i;//ASI SE MULTIPLICA EL VALOR QUE VAYA OBTENIENDO 
//LA VARIABLE FACTORIAL POR EL VALOR QUE CONTENGA LA VARIABLE i
}
//System.out.println("FACTORIAL : "+factorial);//IMPRIMIREMOS UNA PRUEBA
permutar();
}
public static void permutar()
{
for(int i=0;i<factorial;i++)//AKI SE DEBEN OBTENER EL NUMERO DE RESPUESTAS
//EQUIVALENTES AL FACTORIAL
{
int arreglo[]=new int[cadena.length()];//SE CREA UN ARREGLO DEL TAMAÑO DE LA CADENA
for(int j=0;j<arreglo.length;j++)
{
arreglo[j]=-1;//SE LE DESIGNA UN NUMERO NEGATIVO A CADA CASILLA DEL ARREGLO 
//PARA FACILITAR LA COMPARACION
}
for(int j=0;j<arreglo.length;j++)
{
boolean continuar=true;
do
{
boolean repite=false;
int random=(int) Math.rint(Math.random()*(cadena.length()-1));
//AKI OBTENEMOS UN 
//NUMERO ALEATORIO ENTRE 0 Y EL TAMAÑO DE LA CADENA
for(int m=0;m<arreglo.length;m++)
{
if(random==arreglo[m])//AKI SE COMPARA EL NUMERO ALEATORIO OBTENIDO
//CON LOS ELEMENTOS DEL ARREGLO, EN CASO DE EXISTIR LA COINCIDENCIA
//LA VARIABLE REPITE SE DESIGNARA COMO TRUE
{
repite=true;
}
}
if(repite==true)//EN CASO DE QUE LA VARIBALE REPITE SEAIGUAL A TRUE
//SE DEBE BUSCAR OTRO NUMERO ALEAORIO PARA COMPRAR NUEVAMENTE
{
continuar=true;
}
else if(repite==false)//DE CASO CONTRARIO EL NUMERO OBTENIDO SE
//GUARDA EN EL CASILLERO j Y SE TERMINA EL BUCLE DO-WHILE
{
arreglo[j]=random;
continuar=false;
}
}while(continuar);
}
String temp="";
for(int j=0;j<arreglo.length;j++)//SE CREA UNA CADENA DE LOS NUMEROS 
//OBTENIDOS
{
temp+=arreglo[j];
}
boolean repite=false;
for(int j=0;j<permutaciones.size();j++)
{
if(temp.equals(permutaciones.get(j).toString()))//SE COMPARA LA CADENA
//OBTENIDA AL UNIR LOS NUMEROS ALEATORIOS CONTODOS LOS ELEMENTOS
//DEL VECTOR, EN CASO DE REPETIRSE LA VARIABLE REPITE SERA IGUAL A TRUE
{
repite=true;
}
}
if(repite==true)//EN CASO DE REPETIRSE DICHA CADENA, EL VECTOR PERMANECERA 
//SIN MODIFICACIONES Y LA VARIBLE INCREMENTAL I SERA DECREMENTADA EN UNO
{
i--;
}
else if(repite==false)//EN CASO CONTRARIO LA CADENA TEMP SE 
//AGREGARA AL VECTOR PERMUTACIONES.
{
permutaciones.addElement(temp);
}
}
for(int i=0;i<permutaciones.size();i++)//EN ESTE FOR SE CONVIERTEN LOS NUMEROS 
//A LETRAS, Y SE VAN SUTITUYENDO LAS CADENAS EN EL VECTOR
{
String temp="";
char arr[]=permutaciones.get(i).toString().toCharArray();//SE CREA UN ARREGLO
//DE CARACTERES DE CADA UNA DE LAS PERMUTACIONES NUMERICAS OBTENIDAS.
for(int j=0;j<arr.length;j++)
{
temp+=cadena.charAt(Integer.parseInt(""+arr[j]));//SE OBTIENE EL NUMERO DE 
//LETRA OBTENIDA CONVIRTIENDO EL CARACTER DEL ARREGLO ARR
//A VALOR NUMERICO Y OBTENIENDO EL VALOR DE LETRA QUE CONTIENE ESA UBICACION
}
permutaciones.set(i, temp);
}
}