// ---------- PREGUNTA1 ------------

// Archivo Tabla.java

import java.io.*;



class TablaLLena extends Exception{}

class NoExiste extends Exception {}



public class Tabla{

	protected int n;

	protected String[] a;

	public Tabla(int x){

		a = new String[x];

		n = 0;

	}

	public void agregar(String x)throws TablaLLena{

		if(n>=a.length) throw new TablaLLena();

		a[n++]=x; 

	}

	public int indice(String x)throws NoExiste{

		for (int i=0 ; i<n ; ++i )

			if( a[i].equals(x) ) return i;

		throw new NoExiste();

	}

}



// ---------- PREGUNTA2 ------------

//Archivo p2.java

class Pregunta2{



public static void main(String []args)throws InterruptedException{

	String[] a={"atre","daa","bdf","cfd"};

	System.out.println(mayor(a)); //escribe: "daa" en pantalla

	

	String[][]m = {{"a","g","d"},{"q","z","a"},{"f","f","y"},{"o","m","q"}};

	System.out.println(mayor(m)); //escribe: "z" en pantalla

}

static public String mayor(String[] x)throws InterruptedException{

	int im = x.length/2;

	MayorString m1=new MayorString(x,0,im), m2=new MayorString(x,im+1,x.length-1);

	m1.start(); m2.start();

	m1.join(); String mayor1=m2.toString();

	m2.join(); String mayor2=m2.toString();

	return mayor1.compareTo(mayor2)>0 ? mayor1 : mayor2;

}

static public String mayor(String[][] x)throws InterruptedException{ 

	String[] m = new String[x.length];

	for(int i=0; i<x.length; ++i){

		m[i] = mayor(x[i]);

	}

	return mayor(m);

}

}



class MayorString extends Thread{

	private String[] a;

	private int ip, iu;	//indices de primero y ultimo

	private String mayor;

	public MayorString(String[] x,int ip, int iu){ 

		a=x; this.ip=ip; this.iu=iu;

 	}

	public void run(){

		mayor="";

		for(int i=ip; i<=iu; ++i)

			if(a[i].compareTo(mayor)>0) mayor=a[i];

	}

	public String toString(){return mayor;}

}



// ---------- PREGUNTA3 ------------

//Archivo p3.java

import java.awt.*; 

import java.awt.event.*;

import java.applet.*;



public class p3 extends Applet implements ActionListener{

	private TextField numero = new TextField();

	private Label respuestax = new Label("X     ?");

	private Button si = new Button("si");

	private Button no = new Button("no");

	private int X = (int)(100*Math.random());



	public void init(){

		Panel p2 = new Panel();

		p2.setLayout(new GridLayout(1,2) );

		p2.add(new Label("X?"));p2.add(numero);



		Panel p4 = new Panel();

		p4.setLayout(new GridLayout(1,3) );

		p4.add(new Label("De nuevo?"));p4.add(si);p4.add(no);



		setLayout(new GridLayout(4,1));

		add(new Label("Adivine X (0-99)"));

		add(p2); add(respuestax); add(p4);

		numero.addActionListener(this); 

		si.addActionListener(this); no.addActionListener(this); 

	}



	public void actionPerformed(ActionEvent x){

		if(x.getSource()==numero){

			int num = Integer.parseInt(numero.getText());

			respuesta.setText("X " + (X>num?">":(X<num?"<":"=")) + num);

		}

		else if(x.getSource()==si){

			X = (int)(100*Math.random());

			numero.setText("");	

			respuestax.setText("X     ?");

		}

		else{	setVisible(false);

	            	repaint();

		}

	}

}