Download - Trabajo Tres
Trabajo Numero 3:
Trabajo Numero 3:Mantenimiento y uso de vectores:
Elaborar un programa que permita la administracion de un arreglo unidimensional,. Que conste de metodos de insercin de elemento por valor y por posicin, eliminacin de elemento por posicion o valor y el ordenamiento del arreglo.Codigo:
FRAME:package cciiitrabajo03;
import javax.swing.*;
public class Frame extends JFrame {
// Metodo constructor
Frame(JPanel panel){
super("Mantenimiento de Vectores");
this.setContentPane(panel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setBounds(0,0,650,500);
this.setVisible(true);
}
}
MAIN:package cciiitrabajo03;
public class Main {
public static void main(String[] args) {
Panel panel = new Panel();
Frame frame = new Frame(panel);
}
}PANEL:package cciiitrabajo03;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.*;
import javax.swing.*;
public class Panel extends JPanel implements ActionListener {
JLabel lblArreglo;
JButton[] btn = new JButton[10];
JTextArea txtS;
JScrollPane scpScroll;
int amplitud;
int n[];
int indice = 0;
Panel() {
this.setLayout(null);
lblArreglo = new JLabel("Arreglos Lineales", JLabel.CENTER);
lblArreglo.setForeground(Color.blue);
lblArreglo.setFont(new Font("dialog", 3, 24));
lblArreglo.setBounds(20, 20, 300, 40);
add(lblArreglo);
for (int i = 0; i < 10; i++) {
btn[i] = new JButton("");
btn[i] = new JButton(etiqueta(i));
btn[i].addActionListener(this);
btn[i].setBounds(320, (23 * i) + 100, 300, 23);
this.add(btn[i]);
}
btn[6].setVisible(false);
txtS = new JTextArea();
scpScroll = new JScrollPane(txtS);
scpScroll.setBounds(10, 80, 300, 298);
add(scpScroll);
}
// Procesa eventos de tipo ActionEvent
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < btn.length; i++) {
if (e.getSource() == btn[i]) {
botonPulsado(i);
}
}
}
// Mtodos que retornan valor (con parmetros)
String etiqueta(int i) {
switch (i) {
case 0:
return "Ingresar el arreglo";
case 1:
return "Eliminar por indice";
case 2:
return "Eliminar por valor";
case 3:
return "Ingresar por posicion";
case 4:
return "Ingresar por valor";
case 5:
return "Obtener Elemento";
case 7:
return "Ordenar Ascendente";
case 8:
return "Listar";
case 9:
return "Limpiar";
}
return "";
}
// Mtodos tipo void (con parmetros)
void botonPulsado(int i) {
switch (i) {
case 0:
leerArreglo();
break;
case 1:
eliminacion(leerDato("Ingresar Posicion a eliminar"));
break;
case 2:
eliminacionPorValor(leerDato("Ingresar Valor a eliminar"));
break;
case 3:
insercion(leerDato("Ingresar posicion"), leerDato("Ingresar Valor"));
break;
case 4:
insercionPorValor(leerDato("Ingresar Valor a agreagar"));
break;
case 5:
obtener(leerDato("Ingresar indice"));
break;
case 7:
ordenarEnAscenso();
break;
case 8:
listar();
break;
case 9:
limpiar();
break;
}
}
void leerArreglo() {
limpiar();
amplitud = leerDato("Ingresar tamao del Arreglo");
n = new int[amplitud];
for (int i = 0; i < amplitud; i++) {
n[i] = leerDato("Ingresar elemento n["+i+"]");
}
indice = n.length;
listar();
}
void eliminacion(int pos) {
for (int i = pos; i < indice - 1; i++) {
n[i] = n[i + 1];
}
indice--;
reducirArreglo();
listar();
}
void eliminacionPorValor(int valor) {
ordenarEnAscenso();
int c = 0;
int pos = 0;
for (int i = 0; i < indice; i++) {
if (n[i] == valor) {
pos = i;
break;
}
}
for (int i = 0; i < indice; i++) {
if (n[i] == valor) {
c++;
}
}
if (c == 0) {
JOptionPane.showMessageDialog(this, " No existe elemento " + valor);
} else {
for (int i = 0; i < c; i++) {
eliminacion(pos);
}
}
}
void insercion(int pos, int num) {
ampliarArreglo();
for (int i = indice; i > pos; i--) {
n[i] = n[i - 1];
}
n[pos] = num;
indice++;
listar();
}
void insercionPorValor(int valor) {
ordenarEnAscenso();
int pos = 0;
for (int i = 0; i < indice; i++) {
if (valor >= n[i]) {
pos = i + 1;
}
}
insercion(pos, valor);
}
void obtener(int pos) {
limpiar();
txtS.setText("n[" + pos + "] = " + n[pos]);
}
// Metodos Auxiliares
void ampliarArreglo() {
int aux[] = n;
n = new int[indice + 1];
for (int i = 0; i < indice; i++) {
n[i] = aux[i];
}
}
void reducirArreglo() {
int aux[] = n;
n = new int[indice];
for (int i = 0; i < indice; i++) {
n[i] = aux[i];
}
}
int leerDato(String mensaje) {
int dato = 0;
dato = Integer.parseInt(JOptionPane.showInputDialog(mensaje));
return dato;
}
void listar() {
limpiar();
for (int i = 0; i < indice; i++) {
imprimir("n[ " + i + " ] = " + n[i]);
}
}
void limpiar() {
txtS.setText("");
}
void imprimir(String cadena) {
txtS.append(cadena + "\n");
}
int aleatorio(int min, int max) {
return (int) ((max - min + 1) * Math.random()) + min;
}
void ordenarEnAscenso() {
int i, j, aux;
for (i = 0; i < indice - 1; i++) {
for (j = i + 1; j < indice; j++) {
if (n[i] > n[j]) {
aux = n[i];
n[i] = n[j];
n[j] = aux;
}
}
}
listar();
}
}RESULTADOS:
Llenado:
Ordenamiento:
Eliminacion por valor: