	/** Clase que representa la información para administrar el uso de computadoras en una sala de cómputo */

public class SalaComputo {
	public Computadora [] computadoras;
	public String nombre;
	public int capacidad;
		/** Constructor. Recibe como parámetros el nombre de la sala y su capacidad */
	public SalaComputo ( String n, int cap ) {
		nombre = n;
		capacidad = cap;

		computadoras = new Computadora[capacidad];

		for ( int i = 0; i < capacidad; i++ )	{
			computadoras[i] = new Computadora();
		} // for
	} // SalaComputo() Constructor

		/** Método que recibe el nombre del usuario y el número de computadora a la que será asignado. */
	public boolean asignar ( int i, String usuario)
	{
		if ( (!computadoras[i].ocupada) && (i >= 0 && i<capacidad) )  
		{
			computadoras[i].usuario = usuario;
			computadoras[i].ocupar();
			return true;
		} else	{
				return false;
			}
	}
		/** Método que retorna true si la sala está llena, de lo contrario retorna false. */
	public boolean llena()	{
		boolean res = true;
		for (int i=0; i < capacidad; i++)
		{
			res = res && computadoras[i].ocupada;
			if (!res) break;
		} // for
		return res;
	} //llena
		/** Método que retorna la primera localidad disponible en la sala */
	public int buscarLugar()	{
		int disponible = -1;

		if ( !llena() ) 	{
			for ( int i = 0; i < capacidad; i++ )	{
				if ( !computadoras[i].ocupada)	{
					disponible = i;
					break;
				} // if
			} // for
		} // if !llena
		return disponible;
	} // buscarLugar()
		/** Método que imprime el estado de todas las computadoras en la sala */
	public void imprimir()	{
		for (int i = 0; i < capacidad; i++ )	{
			System.out.println(" Computadora       |    Ocupada    |    Usuario   ");
			System.out.print( "     " + i + "  " );
			computadoras[i].print();
			System.out.println("\n");
		}
	}//imprimir
		/** Computadora que libera una computadora */
	public boolean desasignar(int i)	{
		if ( ( i >= 0 && i < capacidad) ) // i debe estar en el rango
		{
			if ( computadoras[i].ocupada )	{
				computadoras[i].ocupada = false;
				computadoras[i].usuario = "desconocido";
			} //if 
			return true;
		} else	{
				return false;
			} // if/else
	} //desasignar
} //SalaComputo
