// Lab06.java (c) 2000 adolfo@di-mare.com /** @(#)Lab06.java 2007 Ejemplo de una clase que mantiene un vector ordenado. @author Adolfo Di Mare */ import java.io.*; // Clases para leer desde el teclado import java.util.Random; // Clases para números aleatorios import java.lang.System; // Esta siempre la importa Java /** Clase para mantener un vector de valores enteros ordenados. */ class Lab06 { /* Capacidad máxima del vector */ public final static int Mx = 5; /** Vector de valores almacenados */ private int m_VEC[]; /** Ultimo componente libre en el vector {@code "m_VEC"} */ private int m_n; /** Constructor por defecto */ public Lab06() { m_n = 0; m_VEC = new int[Mx]; } /** Retorna {@code true} cuando ya no le cabe ningún valor más al vector. */ public boolean lleno() { return m_n >= Mx; } /** Agrega una copia de {@code "v"} al vector. */ public void agregue(int v) { m_VEC[m_n++] = v; reordene(); } /** Retorna la cantidad de valores almacenados en el vector. */ public int cardinalidad() { return m_n; } /** Acceso al valor {@code "V[n]"}. */ public int at(int n) { return m_VEC[n]; } /** Reordena el valor de {@code "this->m_VEC[]"}, de manera que quede ordenado. * Precondición Se supone que los valores * m_VEC[0]...v[m_n-2] ya están en orden. */ private void reordene() { for (int i=m_n-2; i>=0; --i) { if (m_VEC[i] > m_VEC[i+1]) { // intercambia int tmp = m_VEC[i]; m_VEC[i] = m_VEC[i+1]; m_VEC[i+1] = tmp; } } } // reordene() /** Programa principal. */ public static void main( String args[] ) { long semilla = ( new java.util.GregorianCalendar() ) .hashCode(); Lab06 V = new Lab06(); Random rand = new Random( semilla ); System.out.println( "Comienzo..." ); while ( !V.lleno() ) { int m = rand.nextInt( 100 ); System.out.println( "Agrego otro número: " + (m+30) ); V.agregue( m+30 ); } for (int i=0; i java Lab06 // [en la pantalla de interacciones del DrJava] // Jeliot: // - http://cs.joensuu.fi/jeliot/javaws/jeliot.jnlp // EOF: Lab06.java