jueves, 23 de febrero de 2017

EJERCICIO 2
package examen;

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;

public class Form_Arreglo extends JFrame implements ActionListener {

    JLabel lbltam;
    JLabel lblfrase;
    JTextField txttamanio;
    JButton btn_Motrar;
    JButton btn_ingresar;
    JButton btn_ordenar;
    JButton btn_Pares;
    JButton btn_multiplos;
    JButton btn_salir;
    JTextArea txtarea_valores;
    JScrollPane contenedor;
    ObjectOutputStream var1;
    ObjectInputStream var2;
    MainArchivo archivo = new MainArchivo();

    private File file;
    private FileWriter fileWriter;
    private PrintWriter printWriter;
    private BufferedReader bufferedReader;
    private FileReader fileReader;

    private String rutaArchivo = "Archivoexa/Examen.txt";

    Examen miexamen = new Examen(100);

    public Form_Arreglo(String titulo) {
        setTitle(titulo);
        Interfaz();
    }

    public void Interfaz() {

        lbltam = new JLabel("Tamaño del vector");
        lbltam.setBounds(10, 20, 150, 25);
        add(lbltam);

        lblfrase = new JLabel("VECTOR");
        lblfrase.setBounds(195, 55, 150, 25);
        add(lblfrase);

        txttamanio = new JTextField();
        txttamanio.setBounds(180, 20, 100, 25);
        add(txttamanio);

        btn_ingresar = new JButton("Ingresar");
        btn_ingresar.setBounds(10, 80, 100, 25);
        btn_ingresar.addActionListener(this);
        add(btn_ingresar);

        btn_Motrar = new JButton("Mostrar");
        btn_Motrar.setBounds(10, 110, 100, 25);
        btn_Motrar.addActionListener(this);
        add(btn_Motrar);

        btn_Pares = new JButton("Pares");
        btn_Pares.setBounds(10, 140, 100, 25);
        btn_Pares.addActionListener(this);
        add(btn_Pares);

        btn_multiplos = new JButton("Multiplos");
        btn_multiplos.setBounds(10, 170, 100, 25);
        btn_multiplos.addActionListener(this);
        add(btn_multiplos);

        btn_ordenar = new JButton("Ordenar");
        btn_ordenar.setBounds(10, 200, 100, 25);
        btn_ordenar.addActionListener(this);
        add(btn_ordenar);

        btn_salir = new JButton("Salir");
        btn_salir.setBounds(10, 230, 100, 25);
        btn_salir.addActionListener(this);
        add(btn_salir);

        txtarea_valores = new JTextArea();
        contenedor = new JScrollPane(txtarea_valores);
        contenedor.setBounds(150, 80, 150, 200);
        add(contenedor);

//        txtarea_valores.setBounds(150, 80, 150, 200);
//        add(txtarea_valores);
    }

    public void numPares() {
        txtarea_valores.append(" -----PARES------ \n ");
        for (int i = 0; i < miexamen.getIndice(); i++) {
            if (miexamen.getNum()[i] % 2 == 0) {
                txtarea_valores.append(" [ " + (i + 1) + " ] = " + miexamen.getNum()[i]);
                txtarea_valores.append(" \n ");
            }
        }
    }

    public void multiplosDos() {
        txtarea_valores.append(" -----MULTIPLOS DE DOS------ \n ");
        for (int i = 0; i < miexamen.getIndice(); i++) {
            if (miexamen.getNum()[i] % 2 == 0) {
                txtarea_valores.append(" [ " + (i + 1) + " ] = " + miexamen.getNum()[i]);
                txtarea_valores.append(" \n ");
            }
        }
    }

    public void burbuja() {
        int auxiliar;
        int i = 0;
        for (i = 0; i < miexamen.getIndice(); i++) {
            for (int j = 0; j < miexamen.getIndice(); j++) {
                if (miexamen.getNum()[j] < miexamen.getNum()[i]) {
                    auxiliar = miexamen.getNum()[j];
                    miexamen.getNum()[j] = miexamen.getNum()[i];
                    miexamen.getNum()[i] = auxiliar;
                }
            }
        }

    }

    public void ordenar() {
        txtarea_valores.append(" -----ORDENADO------ \n ");
        this.burbuja();
        for (int i = 0; i < miexamen.getIndice(); i++) {
            txtarea_valores.append(" [ " + (i + 1) + " ] = " + miexamen.getNum()[i]);
            txtarea_valores.append(" \n ");
            System.out.println("[" + (i + 1) + "]" + miexamen.getNum()[i]);

        }
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == btn_ingresar) {
            System.out.println(Integer.parseInt(txttamanio.getText().trim()));
            miexamen.Generar(Integer.parseInt(txttamanio.getText().trim()));
//binArio
            try {
                var1 = archivo.Escribir_Archivo_obj("Archivoexa/vector.txt");
                if (var1 != null) {
                    var1.writeObject(txtarea_valores);
                }
                var1.close();
            } catch (Exception ee) {
                System.out.println(ee.getMessage());
            }
        }
        }

        if (e.getSource() == btn_Motrar) {
            for (int i = 0; i < miexamen.getIndice(); i++) {
                txtarea_valores.append("Vector " + (i + 1) + " = " + miexamen.getNum()[i]);
                txtarea_valores.append("\n");
            }

            try {
                EscribirArchivo();
            } catch (Exception ee) {
                System.out.println("" + ee.getMessage());
            }
        }

        if (e.getSource() == btn_Pares) {
            this.numPares();

        }

        if (e.getSource() == btn_multiplos) {
            this.multiplosDos();

        }

        if (e.getSource() == btn_ordenar) {
            this.ordenar();
        }

        if (e.getSource() == btn_salir) {
            System.exit(0);
        }
    }

    public FileWriter AbrirArchivo() throws IOException {
        FileWriter temporalArchivo = null;
        try {
            temporalArchivo = new FileWriter(this.rutaArchivo);
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        }
        return temporalArchivo;
    }

    public void EscribirArchivo() throws IOException {
        FileWriter temporalArchivo = this.AbrirArchivo();
        BufferedWriter escribeArchivo = null;
        if (temporalArchivo != null) {
            escribeArchivo = new BufferedWriter(temporalArchivo);
            try {

                escribeArchivo.write(txtarea_valores.getText());
//                escribeArchivo.write("\n");
                escribeArchivo.newLine();
            } catch (IOException ee) {
                System.out.println("" + ee.getMessage());
            } catch (Exception e) {
                System.out.println("" + e.getMessage());
            } finally {
                if (escribeArchivo != null) {
                    escribeArchivo.close();
                }
            }
        }

    }

    public static void main(String[] args) {
        Form_Arreglo form_Arreglo = new Form_Arreglo("Examen");
        form_Arreglo.setLayout(null);
        form_Arreglo.setVisible(true);
        form_Arreglo.setSize(500, 350);
        form_Arreglo.setResizable(false);
        form_Arreglo.getContentPane().setBackground(new Color(255, 204, 112));

    }
}
ackage examen;

import java.util.Scanner;


public class Examen {

    int indice;
    int max;
    int num[] = new int[max];

    public Examen(int taman) {
        indice = 0;
        max = taman;
        this.num = new int[max];
    }

    public int getIndice() {
        return indice;
    }

    public void setIndice(int indice) {
        this.indice = indice;
    }

    public int[] getNum() {
        return num;
    }

    public void setNum(int[] num) {
        this.num = num;
    }

    public void Generar(int tamanio) {
        for (int i = 0; i <  tamanio; i++) {
            num[indice++] = (int) (0 + Math.random() * 10);
        }
    }

    public void mostrar() {
        for (int i = 0; i < this.getIndice(); i++) {
            System.out.println("num : [" + i + "] = " + num[i]);
        }

    }

    public void Multiplos_dos() {
        for (int i = 0; i < this.getIndice(); i++) {

            if ((num[i] % 2) == 0) {
                System.out.println("Multiplos [" + i + "] = " + num[i]);
            }
        }
    }

    public void Num_Pares() {
        for (int i = 0; i < this.getIndice(); i++) {
            if ((num[i] % 2) == 0) {
                System.out.println("Pares [" + i + "] = " + num[i]);
            }
        }
    }

    public void Ordenar_Ma() {
        int i, j, may, pos, tmp;
        for (i = 0; i < this.getIndice(); i++) {
            may = num[i];
            pos = i;
            for (j = i + 1; j < this.getIndice(); j++) {
                if (num[j] > may) {
                    may = num[j];
                    pos = j;
                }
            }
            if (pos != i) {
                tmp = num[i];
                num[i] = num[pos];
                num[pos] = tmp;
            }
            System.out.println("Vector [" + (i) + "] = " + num[i]);

        }
    }

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("Ingrese el tamaño del vector ");
        int tamanio = sc.nextInt();
        Examen a = new Examen(100);
        a.Generar(tamanio);
        a.mostrar();
        System.out.println("");
        System.out.println("Multiplos de dos ");
        a.Multiplos_dos();
        System.out.println("");
        System.out.println("Numeros pares ");
        a.Num_Pares();
        System.out.println("");
        System.out.println("OrdenAr de mayor a menor ");
        a.Ordenar_Ma();
    }
    
    
}

EJERCICIO 1
package Semana4examen;

import Semana4examen.ArregloSueldos;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.*;
import javax.swing.event.*;

/**
 *
 * @author luz
 */
public  class Form_Sueldo extends JFrame implements ActionListener {

    JLabel lbl_taman;
    JLabel lbl_frase;
    JTextField txt_tamanio;
    JTextField txt_resul;
    JButton btn_agregar;
    JButton btn_mostrar;
    JButton btn_mosmayores;
    JButton btn_resultado;
    JButton btn_salir;
    JScrollPane contenedor;
    JTextArea jta_arregloSu;
    String rutaArchivo = "h:/Sueldo.txt";
    ArregloSueldos miarreglo = new ArregloSueldos(100);

    public Form_Sueldo() {
        interfaz();
    }

    public void interfaz() {
        lbl_taman = new JLabel("Ingrese tamaño ");
        lbl_taman.setBounds(20, 20, 100, 20);
        add(lbl_taman);

        txt_tamanio = new JTextField();
        txt_tamanio.setBounds(120, 20, 50, 20);
        add(txt_tamanio);

        btn_agregar = new JButton("AGREGAR");
        btn_agregar.setBounds(250, 70, 100, 20);
        btn_agregar.addActionListener(this);
        add(btn_agregar);

        btn_mostrar = new JButton("MOSTRAR");
        btn_mostrar.setBounds(250, 100, 100, 20);
        btn_mostrar.addActionListener(this);
        add(btn_mostrar);

        btn_mosmayores = new JButton("MAYORES");
        btn_mosmayores.setBounds(250, 130, 100, 20);
        btn_mosmayores.addActionListener(this);
        add(btn_mosmayores);

        lbl_frase = new JLabel(" ARREGLO DEL SUELDO ");
        lbl_frase.setBounds(60, 50, 140, 20);
        add(lbl_frase);

        jta_arregloSu = new JTextArea();
        contenedor = new JScrollPane(jta_arregloSu);
        contenedor.setBounds(40, 70, 200, 220);
        add(contenedor);

        txt_resul = new JTextField();
        txt_resul.setBounds(290, 195, 130, 20);
        add(txt_resul);

        btn_resultado = new JButton("PROMEDIO");
        btn_resultado.setBounds(250, 160, 100, 20);
        btn_resultado.addActionListener(this);
        add(btn_resultado);

        btn_salir = new JButton("SALIR");
        btn_salir.setBounds(290, 240, 100, 20);
        btn_salir.addActionListener(this);
        add(btn_salir);

    }

    public void mostrar() {
        for (int i = 0; i < miarreglo.getIndice(); i++) {
            System.out.println(" sueldo [" + (i + 1) + "] : " + miarreglo.getSueldos()[i]);
            jta_arregloSu.append(" sueldo [" + (i + 1) + "] : " + miarreglo.getSueldos()[i]);
            jta_arregloSu.append("\n");
        }
    }

    public void mayores() {
        int cont = 0;
        System.out.println("\n *** Sueldos mayores a 2000 ***");

        for (int i = 0; i < miarreglo.getIndice(); i++) {
            if (miarreglo.getSueldos()[i] > 2000) {
                System.out.println(" mayores [" + ( i + 1) + " ] : "+ miarreglo.getSueldos()[i] );
                jta_arregloSu.append("mayores [" + ( i + 1 )+ "] : "+ miarreglo.getSueldos()[i] );
                jta_arregloSu.append("\n");
                cont++;
            }
        }
        
        jta_arregloSu.append(" Mayores  " + cont);
        jta_arregloSu.append("\n");

    }

    public void promedio() {
        double promedio = 0;
        double suma = 0;
        int cont = 0;
        for (int i = 0; i < miarreglo.getIndice(); i++) {
            if (miarreglo.getSueldos()[i] > 2000) {
                suma = suma + miarreglo.getSueldos()[i];
                cont++;
            }
        }
        promedio = suma / cont;
        txt_resul.setText(String.valueOf(promedio));

    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == btn_agregar) {

            System.out.println(Integer.parseInt(txt_tamanio.getText().trim()));
            miarreglo.Llenar_Sueldo(Integer.parseInt(txt_tamanio.getText().trim()));

        }

        if (e.getSource() == btn_mostrar) {

            this.mostrar();
            try {
                EscribirArchivo();
                System.out.println("\n");
            } catch (Exception ee) {
                System.out.println(""+ee.getMessage());
            }
        }

        if (e.getSource() == btn_mosmayores) {
            this.mayores();
            try {
                EscribirArchivo();
                System.out.println("\n");
            } catch (Exception ee) {
                System.out.println(""+ee.getMessage());
            }
        }

        if (e.getSource() == btn_resultado) {
            this.promedio();
            try {
                EscribirArchivo();
            } catch (Exception ee) {
                System.out.println(""+ee.getMessage());
            }
        }

        if (e.getSource() == btn_salir) {
            System.exit(0);
//            dispose();
        }
    }

    public static void main(String[] args) {
        Form_Sueldo Ir = new Form_Sueldo();
    
        Ir.setLayout(null);
        Ir.setSize(450, 400);
        Ir.setVisible(true);
    }

    public FileWriter AbrirArchivo() throws IOException {
        FileWriter temporalArchivo = null;
        try {
            temporalArchivo = new FileWriter(rutaArchivo);
        } catch (Exception e) {
            System.out.println("" + e.getMessage());
        }
        return temporalArchivo;
    }


package Semana4examen;

import java.util.Scanner;
import sun.security.util.Length;

/**
 *
 * @author luz
 */
public class ArregloSueldos {

    private int max;
    private int indice;
    private double sueldos[];

    public ArregloSueldos(int tam) {
      
        this.indice = 0;
        this.max=tam;
        this.sueldos= new double[this.max];
    }
  

   
    public int getIndice() {
        return indice;
    }

    public void setIndice(int indice) {
        this.indice = indice;
    }

    public double[] getSueldos() {
        return sueldos;
    }

    public void setSueldos(double[] sueldos) {
        this.sueldos = sueldos;
    }

    public void Llenar_Sueldo(int tamanio) {
        for (int i = 0; i < tamanio; i++) {
            this.sueldos[indice++]=(double) (500+(Math.random()*3000));
        }
    }
    
    public void Mostrar_Sueldo(){
        System.out.println("*** SUELDOS ***");
        for (int i = 0; i < getIndice() ; i++) {
            System.out.println("["+sueldos[i]+"]");
        }
    }
    
    public double Mayores_Sueldos(){
        int cont=0;
        System.out.println("\n *** Sueldos mayores a 2000 ***");
        for (int i = 0; i < getIndice(); i++) {
            
            if (sueldos[i] > 2000) {
                System.out.println("["+sueldos[i]+"]");
                cont++;
            }
        }
        return cont;
    }
    
    public void Promedio_Sueldos(){
        double suma=0;
        double promedio;
        for (int i = 0; i  = "+ promedio);
       
    }
    
    
}

jueves, 10 de noviembre de 2016

MÉTODO DE BÚSQUEDA

La operación  de buscar un dato dentro de un conjunto dado es una de las operaciones más frecuentes dentro del proceso de datos. 
Clasificaremos los algoritmos de búsqueda en función de si e conjunto de datos sobre lo que se extiende la búsqueda está ordenado o no.(Isabel Gallego Férnandez y Manuel Medina Llinás)
Búsqueda Secuencial 
El método de búsqueda secuencial es el mas sencillo y se debe utilizar si el conjunto de datos sobre el que se extiende la búsqueda no está ordenado siguiendo criterio alguno. Como su nombre indica, consiste en recorrer el conjunto de datos uno a uno y comparar cada rato con el valor buscado hasta encontrarlo, si es que existe, o hasta el último dato sin éxito en la búsqueda, en el caso que no exista.(Isabel Gallego Férnandez y Manuel Medina Llinás)
Búsqueda Binaria
En el caso de buscar sobre un conjunto ordenado, es posible optimizar el criterio de búsquedas gracias a esa ordenación. Estos métodos de búsqueda son muy eficientes, sobre todo para grandes cantidades de datos ; es por esta razón que se suelen utilizar incluso sobre conjuntos de datos no ordenados, sometiéndolos a un proceso de ordenación previo a la búsqueda propiamente dicha. Uno  de estos métodos, el mas popular y sencillo de diseñar, es el método de búsqueda binaria o dicotómica, que estudiaremos en este apartado. 
La búsqueda binaria se basa en aprovechar el hecho de que se trata de datos ordenados para extender la búsqueda únicamente a aquella porción de los datos donde, si el dato existe es seguro que se encuentra.(Isabel Gallego Férnandez y Manuel Medina Llinás)  

CLASE BUSQUEDAS
package practica2;

public class busqueda {

    int max = 100;
    int vector[];
    int indice = 0;

    public void llenarVector(int tamanio) {
        indice=0;
       vector= new int[max];
        while (this.indice < tamanio) {
            vector[this.indice++] = (int) (Math.random() * 20);
        }

    }

    public void Mostrar() {
        for (int i = 0; i < this.getIndice(); i++) {
            System.out.println("Vector [" + i + "] = " + vector[i]);
        }
    }

    public void busquedaSecuencial(int numero) {
        int band = 0;
        for (int i = 0; i < this.getIndice(); i++) {
            if (numero == vector[i]) {
                System.out.println("el numero esta en la posicion [" + i + "]");
                band++;
            }
        }
        if (band == 0) {
            System.out.println("no existe el numero dentro del vector ");
        }
        System.out.println("band " + band);
    }

    public int busquedaBinaria(int numero) {
        int inicio = 0;
        int fin = this.getIndice() - 1;
        int posicion;
        while (inicio <= fin) {
            posicion = (inicio + fin) / 2;
            if (vector[posicion] == numero) {
                return posicion;
            } else if (vector[posicion] < numero) {
                inicio = posicion + 1;
            } else {
                fin = posicion - 1;
            }
        }
        return -1;

    }

    public int getIndice() {
        return indice;
    }

    public int[] getVector() {
        return vector;
    }

    public void Intercambiar(int vector[], int i, int j) {
        int aux;
        aux = vector[j];
        vector[j] = vector[i];
        vector[i] = aux;
    }

    public void ordenamientoSeleccion() {
        int i, j, posicion, menor;
        for (i = 0; i < this.getIndice(); i++) {
            menor = vector[i];
            posicion = i;
            for (j = i + 1; j < this.getIndice(); j++) {
                if (vector[j] < menor) {
                    menor = vector[j];
                    posicion = j;
                }
            }
            if (posicion != i) {
                Intercambiar(vector, i, posicion);
            }
        }
    }

}
CLASE MAIN
package practica2;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        busqueda bus = new busqueda();
        System.out.println("Ingrese el tamanio del vector : ");

        bus.llenarVector(Integer.parseInt(br.readLine()));
        bus.Mostrar();
        bus.ordenamientoSeleccion();
        System.out.println("");
        bus.Mostrar();

        System.out.println("Ingrese el numero a buscar : ");
        String numeroo = br.readLine();
        int numero = Integer.parseInt(numeroo);

        System.out.println("-----busqueda de secuencial-----");
        bus.busquedaSecuencial(numero);

        System.out.println("-----busqueda binaria-----");
        int busquedaBinaria = bus.busquedaBinaria(numero);
        if (busquedaBinaria != -1) {
            System.out.println(" existe en la posicion : " + busquedaBinaria);
        } else {
            System.out.println("no se encuentra");
        }
    }
}

MÉTODO DE ORDENAMIENTOS

El problema de la ordenación de un conjunto de datos según un cierto criterio es uno de los más utilizados dentro del proceso de datos, y está ampliamente estudiado en la bibliografía.
Los métodos de ordenación externos se ocupan de estudiar la problemática especifica que comporta el hecho de tener los datos a ordenar almacenados en memoria auxiliar, como es el caso de los ficheros, sobre todo en el caso de ficheros secuenciales. (Isabel Gallego Férnandez y Manuel Medina Linas).
Existen tipos de ordenamiento entre ellos tenemos:
Ordenamiento Burbuja
Consiste en comparar pares de elementos adyacentes e intercambiarlos en el caso de que no estén bien situados según el criterio de ordenación utilizado. Para cada pasada del algoritmo conseguimos que el elemento menor, si la ordenación es creciente, suba como una burbuja hasta su lugar definitivo, pasando de esta forma a engrosar en un elemento el subconjunto ordenado. El método prosigue hasta que el subconjunto desordenado no consta de ningún elemento. (Isabel Gallego Férnandez y Manuel Medina LLinás).
Ordenamiento Inserción
Consiste en dividir el conjunto de datos a ordenar en dos subconjuntos que corresponden, respectivamente, al subconjunto de datos ya ordenados y el subconjunto que contiene los datos pendientes de ordenar. Cada paso del algoritmo consiste en incrementar en un elemento el subconjunto ordenado y decrementar el desordenado, hasta que todos los elementos pertenezcan al subconjunto ordenado y el subconjunto desordenado esté vacío (Isabel Gallego Férnandez y Manuel Medina Llinás).

Ordenamiento Selección
Consiste también en dividir el conjunto de datos a ordenar en dos subconjuntos, el ordenado y el que todavía está desordenado. En cada pasada, el algoritmo selecciona el elemento que cumple el criterio de ordenación(creciente o decreciente) del subconjunto desordenado y lo coloca en el subconjunto ordenado. El algoritmo prosigue hasta que el subconjunto desordenado no consta de ningún elemento.(Isabel Gallego Férnandez y Manuel Medina Llinás).

Ordenamiento QuickSort
Es también un método de ordenación basado en el intercambio, pero en este caso los intercambios no se realizan entre elementos adyacentes, sino distanciados lo más posible.El método Quicksort está basado en la idea de partir el vector en dos particiones delimitadas por un elemento "central" tales que, al final del tratamiento de una partición, la partición izquierda contenga solo elementos menores Al "central" y la derecha mayores al "central". El método consiste en realizar particiones de las particiones hasta que consten de un solo elemento (Isabel Gallego Férnandez y Manuel Medina Llinás).

Ordenamiento Shell
Consiste en ordenar el vector mediante la ordenación de subvectores. Cada subvector se construye mediante aquellos elementos que distan entre sí una constante, empezando por los mas distantes hasta llegar al vector compuesto por los elementos que distan una posición, es decir, todo el vector. Por esta razón, al método se Shell se le denomina también método de inserción con incrementos decrecientes. (Isabel Gallego Férnandez y Manuel Medina Llinás).
   

CLASE ORDENAMIENTOS
package practica1;
import java.util.Random;
public class ordenamiento {

    int max = 100;
    int vector[] = new int[max];

    public void generar(int tamanio) {
        for (int i = 0; i < tamanio; i++) {
            Random rd = new Random();
            vector[i] = rd.nextInt(20);
        }
    }

    public void mostrar(int tamanio) {
        for (int i = 0; i < tamanio; i++) {
            System.out.println("Vector [" + i + "] = " + vector[i]);
        }
    }

    public void Intercambiar(int vector[], int i, int j) {
        int aux;
        aux = vector[j];
        vector[j] = vector[i];
        vector[i] = aux;
    }

    public void ordenamientoBurbuja(int tamanio) {
        for (int i = 0; i < tamanio; i++) {
            for (int j = 0; j < 10; j++) {
                Intercambiar(vector, i, j);
            }
        }
    }

    public void ordenamientoInsercion(int tamanio) {

        int aux, i, j;
        for (i = 0; i < tamanio; i++) {
            j = i;
            aux = vector[i];
            while (j > 0 && aux < vector[j - 1]) {
                vector[j] = vector[j - 1];
                j--;
            }
            vector[j] = aux;
            System.out.println(vector[j]);
            for (int k = 0; k < tamanio; k++) {
                System.out.print(" "+vector[k]);
                        
            }
            System.out.println(" i "+i);
            
        }
    }

    public void ordenamientoShell(int tamanio) {
        int j, l, aux;
        int k;
        k = ( tamanio / 2);
        while (k > 0) {
            for (int i = k; i < tamanio; i++) {
                j = i - k;
                while (j >= 0) {
                    l = j + k;
                    if (vector[j] <= vector[i]) {
                        j--;
                    } else {
                        aux = vector[j];
                        vector[j] = vector[i];
                        vector[i] = aux;
                    }
                }
            }
            k = k / 2;
        }

    }

    public void ordenamientoQuicksort(int vector[], int primero, int ultimo) {

        int aux;
        int i = primero;
        int j = ultimo;
        int pivote = vector[(primero + ultimo) / 2];
        while (i <= j) {
            while (vector[i] < pivote) {
                i++;
            }
            while (vector[j] > pivote) {
                j--;
            }
            if (i <= j) {
                aux = vector[i];
                vector[i] = vector[j];
                vector[j] = aux;
                i++;
                j--;
            }

        }
        if (primero < j) {
            ordenamientoQuicksort(vector, primero, j);
        }
        if (i < ultimo) {
            ordenamientoQuicksort(vector, i, ultimo);
        }

    }

    public void ordenamientoSeleccion(int tamanio) {
        int i, j, posicion, menor;
        for (i = 0; i < tamanio; i++) {
            menor = vector[i];
            posicion = i;
            for (j = i + 1; j < tamanio; j++) {
                if (vector[j] < menor) {
                    menor = vector[j];
                    posicion = j;
                }
            }
            if (posicion != i) {
                Intercambiar(vector, i, posicion);
            }
        }
    }

}

CLASE MAIN
package practica1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;

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

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Ingrese el tamanio del vector : ");
        String tamanioo = br.readLine();
        int tamanio = Integer.parseInt(tamanioo);

        ordenamiento o = new ordenamiento();
        o.generar(tamanio);
        o.mostrar(tamanio);

        System.out.println("-----Ordenamiento de burbuja----- ");
        o.ordenamientoBurbuja(tamanio);
        o.mostrar(tamanio);

        System.out.println("-----Ordenamiento de insercion-----");
        o.ordenamientoInsercion(tamanio);
        o.mostrar(tamanio);

        System.out.println("-----ordenamiento de shell-----");
        o.ordenamientoShell(tamanio);
        o.mostrar(tamanio);

        System.out.println("-----ordenamiento de quicksort-----");
        o.ordenamientoQuicksort(o.vector, 0, tamanio-1);
        o.mostrar(tamanio);

        System.out.println("-----ordenamiento de seleccion-----");
        o.ordenamientoSeleccion(tamanio);
        o.mostrar(tamanio);

    }
}

viernes, 4 de noviembre de 2016

PILAS


DEFINICIÓN DE PILAS:


Una pila es una estructura de datos de acceso restrictivo a sus elementos. 
Las operaciones que caracterizan la pila son las de introducir un nuevo elemento sobre la cima (PUSH) y la de extraer el elemento situado en la cima (POP).
Se puede entender como una pila de libros que se amontonan de abajo hacia arriba.
En principio no hay libros; después ponemos uno, y otro encima de éste, y así sucesivamente. Posteriormente los solemos retirar empezando desde la cima dela pila de libros, es decir, desde el último que pusimos, y terminaríamos por retirar el primero que pusimos, posiblemente ya cubierto de polvo.

Es una estructura de tipo LIFO (Last In First Out), es decir, último en entrar, primero en salir.




lunes, 31 de octubre de 2016

COLAS

"Las colas son secuencias de elementos caracterizadas porque las operaciones de inserción y borrado se realizan sobre extremos opuestos de la secuencia. La inserción se produce en el «final» de la secuencia, mientras que el borrado se realiza en el otro extremo, el «inicio» de la secuencia." (Pantigoso, 2007).

En una cola hay dos extremos, uno es llamado la parte delantera y el otro extremo se llama la parte trasera de la cola. En una cola, los elementos se retiran por la parte delantera y se agregan por la parte trasera, "el primero en llegar es el primero en salir".




viernes, 23 de septiembre de 2016

INTERFAZ GRÁFICA DE USUARIO (GUI)

Las interfaces gráficas de usuario(GUI) ofrecen al usuario ventanas, cuadros de diálogo, barras de herramientas, botones, listas desplegables y muchos otros elementos con los que ya estamos muy acostumbrados a tratar. 
Las GUI se construyen a partir de componentes de GUI (llamados widgets). Un componente de GUI es un objeto visual  con el que el usuario puede interactuar a través del teclado o el mouse.  

Existen dos APIs para la programación de interfaces gráficos de usuario AWT(Abstract Windowing Toolkit) y SWING. 


Similitudes entre Swing y AWT
  • Por regla general, las clases Swing "equivalentes" a las  de AWT se llaman igual, pero con una J delante: JFrame, JTextField, JLabel,etc. teniendo en cuenta que "no todos los componentes están extendidos: para algunos hay componentes equivalentes (Choise), para otros no (Canvas) y para otros constructores son diferentes (Checkbox, Scrollbar, List)".
  • Muchos constructores en Swing tienen los mismos argumentos que en AWT, pero no todos. 
Diferencia entre el Swing y AWT

SWINGAWT
Podemos decir que es la evoluciòn del AWT, la cual al igual que Swing es un conjunto de librerias enfocadas a la construcción de interfaces.
Cada una de las componentes de una ventana en AWT se representa mediante uno o más objetos de la aplicación.
El paquete Swing es parte de la JFC (Java Foundation Classes) en la plataforma Java. La JFC provee facilidades para ayudar a la gente a construir GUIs. Swing abarca componentes como botones, tablas, marcos, etc.
La diferencia de los componentes AWT los Swing se reconocen porque anteponen la letra J antes del nombre.Por ejemplo en AWT se llama Label, mientras que en el Swing se llama JLabel.
Las componentes de Swing utilizan la infraestructura de AWT, incluyendo el modelo de eventos AWT, el cual rige cómo una componente reacciona a eventos tales como, eventos de teclado, mouse, etc.
Permite hacer interfaces gráficas mediante artefactos de interacción con el usuario, como botones, menus, etc.


En sí existe una diferencia, pero al mismo tiempo hay grandes aspectos en común, ambos nos srven para realizar artefactos gráficos y utilizan prácticamente las mismas funciones y componentes, pero la diferencia es que Swing es más avanzado y sus componentes se desarrollan mejor, además AWT necesita tener una plataforma especifica, mientras que desde java Swing podemos utilizarlo y visualizarlo desde diferentes lugares.

AWT
Significa Abstract Windowing Toolkit contiene componentes originales pero no pura interfaz gráfica de usuario que viene con la primera versión de JDK.
  • Es una librería que define un conjunto de clases e interfaces java que permiten la construcción de interfaces gráficas de usuario.
  • Permite hacer interfaces gráficas mediante artefactos de interacción con el,usuario, como botones, menús, texto, botones, etc.Tambien despiegue gráfico general. 
COMPONENTES Y CONTENEDORES
  • COMPONENTES
         *Cualquier elemento gráfico que puede aparecer en una GUI.
         *Lo son todas las clases que derivan de java.awt.Component

         *Ejemplos:

-Botones (java.awt.Button), Campos de texto (java.awt.TextField), etiquetas (java.awt.Label),Listas (java.awt.List), elementos de selección múltiple y exclusiva (java.awt.Checkbox),etc.

  • CONTENEDORES
        *Es un elemento gráfico que puede contener dentro a componentes.
        *Lo son todas las clases que derivan de java.awt.Container
        *Ejemplos:
                           -Ventana (java.awt.Frame)
                           -Dialogo (java.awt.Dialog)
                           -Panel (java.awt.Panel)


JERARQUÍA DE AWT




SWING
Swing es la  evolución de AWT, la cuál al igual que Swing es un conjunto de librerias enfocadas a la construcción de interfaces.

  • Las clases cuyo nombre comienza por J forman parte de Swing.
  • Swing está escrito complementamente en java por lo que es independiente de la plataforma.


COMPONENTEDESCRIPCIÓN
JButton Una implementación de un botón "push".
JCheckBoxUna implementación de una casilla de verificación-un elemento que puede activarse o desactivarse, y que muestra su estado al usuario.
JComboBox Un componente que combina un botón o campo editable y una lista desplegable.
JComponentLa clase base para todos los componentes Swing, excepto contenedoresde Alto nivel.
JDialog La clase principal para la creación de una ventana de diálogo.
JFileChooser Proporciona n mecanismo sencillo para que el usuario elija un archivo.
JFrameUna versión extendida de java.awt.Frame que añade soporte para la arquitectura de componentes JFC/Swing.
JLabelUn área de visualización de una cadena corta de texto o una imagen, o ambos.
JList Un componente que muestra una lista de objetos y permite al usuario seleccionar uno o más  elementos
JMenu Una implementación de un menu-una ventana emergente que contiene JMenusItems que se    muestra cuando el usuario selecciona un elemento en la JMenuBar.
JOptionPaneHace que sea fácil para que aparezca un cuadro de diálogo estándar que solicita a los   usuarios un valor o les informa algo.
JPanelEs un contenedor ligero genérico.
JRadioButtonUna implementacion de un boton de radio-un elemento que puede activarse o desactivarse, y que muestra su estado al usuario.
JScrollBarUna implementación de una barra de desplazamiento.
Jslider Un componente que permite al usuario seleccionar gráficamente un valor deslizando un botón dentro de un intervalo acotado.
JTextAreaUn JTextArea es un area de varias lineas que muestra texto sin formato.
JTextFieldUn JTextField es un componente ligero que permite la edición de una sola línea de texto.
JTreeUn control que muestra un conjunto de datos jerárquicos como un esquema.
JWindow Un JWindow es un contenedor que se puede mostrar en cualquier lugar en el escritorio del usuario
JApplet Una versión extendida de java.applet.Applet que añade soporte para la arquitectura de componentes JFC / Swing

JERARQUÍA DE SWING


A continuación se realizara un ejemplo de operaciones: suma, resta, producto y cociente
//A continuación se realizara un ejemplo de operaciones:suma, resta,prodcto y cociente
package Tarea;
import java.awt.event.*;
import javax.swing.*;

public class Calcu extends JFrame{
    
    JLabel jl_var_1;
    JLabel jl_var_2;
    JLabel jl_result;   
    JTextField jtf_var1;
    JTextField jtf_var2;
    JTextField jtf_resultado;
    JButton btn_suma;
    JButton btn_resta;
    JButton btn_producto;
    JButton btn_cociente;
    JButton btn_salir;
    
    public Calcu() {
        
        setLayout(null);
        
        jl_var_1= new JLabel("Variable 1");
        jl_var_1.setBounds(10, 10, 100, 20);
        
        jl_var_2= new JLabel("Variable 2");
        jl_var_2.setBounds(10, 30, 150, 25);
        
        jl_result=new JLabel("Resultado");
        jl_result.setBounds(30, 170, 100, 15);
        
        jtf_var1= new JTextField(50);
        jtf_var1.setBounds(80,10,100,20);
        
        jtf_var2 = new JTextField(50);
        jtf_var2.setBounds(80,40,100,20);
        
        jtf_resultado = new JTextField(50);
        jtf_resultado.setBounds(100, 170, 120, 20);
        
        btn_suma= new JButton("Suma");
        btn_suma.setBounds(150, 70, 100, 20);
        
        btn_resta = new JButton("Resta");
        btn_resta.setBounds(150, 95, 100, 20);
        
        btn_producto = new JButton("Producto");
        btn_producto.setBounds(150, 120, 100, 20);
        
        btn_cociente = new JButton("Cociente");
        btn_cociente.setBounds(150, 145, 100, 20);
        
        btn_salir= new JButton("Salir");
        btn_salir.setBounds(150, 200, 100, 20);
        
        add(jl_var_1);
        add(jl_var_2);
        add(jl_result);
        add(jtf_var1);
        add(jtf_var2);
        add(jtf_resultado);
        add(btn_suma);
        add(btn_resta);
        add(btn_producto);
        add(btn_cociente);
        add(btn_salir);
        
        btn_suma.addActionListener(new evenSuma());
        btn_resta.addActionListener(new evenResta());
        btn_producto.addActionListener(new evenProducto());
        btn_cociente.addActionListener(new evenCociente());
        btn_salir.addActionListener(new evenSalir());

        
        setTitle(" OPERACION ");
        setSize(300,300);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        
    }
    
    public  class evenSuma implements ActionListener{

        public  void actionPerformed (ActionEvent ee){
            if (ee.getSource()==btn_suma) {
                double a,b,s;
                String n;
                a=Double.parseDouble(jtf_var1.getText());
                b=Double.parseDouble(jtf_var2.getText());
                s=a+b;
                n=String.valueOf(s);
                jtf_resultado.setText(n);
            }
            
            
        }
    }
     
    public class evenResta implements ActionListener{
         public  void actionPerformed (ActionEvent e){
             if (e.getSource()==btn_resta) {
                double a,b,r;
                String m;
                a=Double.parseDouble(jtf_var1.getText());
                b=Double.parseDouble(jtf_var2.getText());
                r=a-b;
                m=String.valueOf(r);
                jtf_resultado.setText(m);
             }
         }
    }
    
    public class evenProducto implements ActionListener{
        public void actionPerformed (ActionEvent eee){
            if (eee.getSource() == btn_producto) {
                double a,b,p;
                String mm;
                a=Double.parseDouble(jtf_var1.getText());
                b=Double.parseDouble(jtf_var2.getText());
                p=a*b;
                mm=String.valueOf(p);
                jtf_resultado.setText(mm);
            }
        }
    }
    
    public class evenCociente implements ActionListener{
        public void actionPerformed(ActionEvent eee){
            if (eee.getSource() == btn_cociente) {
                double a, b, c;
                String nn ;
                a=Double.parseDouble(jtf_var1.getText());
                b=Double.parseDouble(jtf_var2.getText());
                if (b != 0) {
                    c=a/b;
                    nn=String.valueOf(c);
                    jtf_resultado.setText(nn);
                    
                }else{
                    JOptionPane.showMessageDialog(null, "No existe");
                }
            }
        }
    }
    
    public class evenSalir implements ActionListener{
        public void actionPerformed (ActionEvent eeee){
            if (eeee.getSource() == btn_salir) {
                System.exit(0);
            }
        }
    }
    
    public static void main(String[] args) {
        Calcu calcu = new Calcu();
    }
    
}