Archive for Codigo Fuente

Prueba quicksort vs Recorrido BST

Esta es la prueba que estaba realizando para el video tutorial, aqui les dejo el codigo fuente:

def qsort(list):

    if list == []:
        return []
    else:
        pivot = list[0]
        lesser = qsort([x for x in list[1:] if x < pivot])
        greater = qsort([x for x in list[1:] if x >= pivot])
        return lesser + [pivot] + greater

class Nodo(object):

    def __init__(self,value):
        self.k = value
        self.izq = None
        self.der = None
        self.root = None

class BST(object):

    def __init__(self):
        self.root = None

    def insert(self,valor):

        nodo = Nodo(valor)

        if self.root is None:

            self.root = nodo

        else:

            temp = self.root

            while temp is not None:

                nodo.root = temp.root

                if(nodo.k >= temp.k):
                    if temp.der is None:
                        temp.der = nodo
                        break
                    else:
                        temp = temp.der
                else:
                    if temp.izq is None:
                        temp.izq = nodo
                        break
                    else:
                        temp = temp.izq

    def itw(self,nodo):
        if nodo is not None:
            self.itw(nodo.izq)
            print nodo.k
            self.itw(nodo.der)

import sys
import time

N = int(sys.argv[1])
numeros = []
bst = BST()

for i in xrange(N):
    #metodo 1, lista y usar quicksort nativo
    numero = long(raw_input())
    numeros += [numero]
    bst.insert(numero)

start = time.time() #(datetime.datetime.now().time())
numeros.sort()
#numeros = qsort(numeros)
#for el in numeros:
#  print el
print numeros
#bst.itw(bst.root)

end = time.time()#(datetime.datetime.now().time())

print "Time elapsed on sorting:",(end - start)

 

switch y case

Descarga el programa aqui http://www.codigoprogramacion.com/programas/ejemploswitchcase.zip

Programa que demuestra un pequeño ejemplo del uso del switch y case.

Este programa acepta del teclado un numero, presiona 0 o 1 para ver las opciones del menu, otro numero para ver el la opcion por default
si no introduces un numero entonces el programa detecta el error.

El codigo es el siguiente

package ejemploswitchcase;

/**
*
* @author xymind
*/
import java.io.*;
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

int x=0;
System.out.println(“Presiona 0 o 1 para ver las opciones,” +
“intenta probando numeros diferentes o letras”);
try{
InputStreamReader in=new InputStreamReader(System.in);
BufferedReader buffer= new BufferedReader(in);
//leer dato del teclado
x=Integer.parseInt(buffer.readLine());

//ahora x vale el numero que metiste
switch(x)
{
case 0:
{
System.out.println(“esta es la opcion 0″);
break;
}
case 1:
{
System.out.println(“esta es la opcion 1″);
break;
}
default:
{
System.out.println(“No se introdujo un numero dentro de las opciones”);
break;
}
}
}catch(Exception err){System.out.println(“Error, no introduciste un numero”);

}

// TODO code application logic here
}

}

Operaciones matematicas

Puedes descargar el proyecto en java con Netbeans aqui http://www.codigoprogramacion.com/programas/operaciones.zip

Espero el programa sea de utilidad, lo que hace es que captura dos numeros del teclado, y te despliega la suma, resta, multiplicacion, division y residuo de esos 2 numeros.
Un ejemplo clasico para ver el funcionamiento de las operaciones basicas, tambien se ve en el la captura de datos de entrada en un buffer, pero ese tema lo veremos mas adelante.

Adjunto se encuentra el codigo fuente

package operaciones;

/**
*
* @author xymind
*/
import java.io.*; //esta libreria es necesaria para poder capturar datos del teclado
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int x,y;//declaramos 2 variables numericas
//las siguientes 2 lineas generan un objeto que captura el dato del teclado
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader buffer = new BufferedReader(in);

System.out.println(“Dame el primer numero:”);
try{ //siempre se pone un try y catch porque pueden haber errores al leer los datos del teclado
x=Integer.parseInt(buffer.readLine());//se lee un texto del teclado y se guarda en un buffer
//recuerden que esta siendo transformado a tipo Numerico (Integer)

System.out.println(“Dame el segundo numero”);
y=Integer.parseInt(buffer.readLine());

System.out.println(“La suma de los numeros es:”+(x+y));
System.out.println(“La resta de los numeros es:”+(x-y));
System.out.println(“El producto de los numeros es:”+(x*y));
System.out.println(“La division de los numeros es:”+(x/y));
System.out.println(“El residuo de los numeros es:”+(x%y));
}catch(IOException err)
{System.out.println(“Introduciste mal un numero”);}

// TODO code application logic here
}

}

codigo: ciclo for y while

Para descargar este programa has clicl en el siguiente enlace:

http://www.codigoprogramacion.com/programas/programaCiclos.zip

package programaciclos;

/**
*
* @author xymind
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//NUMEROS PARES DEL 1 AL 10 con for
System.out.println(“Acontinuacion e muetra la serie de numeros paresn”);
int x;
int y;
for(int i=1;i<5;i++)
{
x=i*2;//aqui X toma el valor del actual valor de i, multiplicado por 2
System.out.println(“Numero par:”+x);
}

//NUMEROS IMPARES DEL 1 AL 10 con while
System.out.println(“Acontinuacion se muestra la serie de numeros imparesn”);
int j=1;
while(j<10)
{
System.out.println(“Numero impar:”+j);
j=j+2;/*aqui incremantamos la variable j en 2, de manera
que si tenia el valor de 1, se le suma 2 y valdra 3
* cuando j llegue al valor igual o mayor a 10, el ciclo termina

*/
}

}
}