Vous êtes sur la page 1sur 4

Seccin:___Apellido:_______________________Nombre:__________________Firma:___________ CC1001 Control N 2 Pregunta 1 sbado 2 de mayo de 2009 Tiempo Control: 2 hrs Con apuntes individuales Sin consultas

tas - Contestar en esta hoja A)(1.5)Escriba una clase que maneje puntos de coordenadas enteras positivas y se use en el sgte programa:
Punto p=new Punto(2,1),q=new Punto(1,3); U.print(p.getX()+ +p.getY()+ +p.distancia(q));//escribe 2 1 2.236

class Punto{ private int X,Y;

} B)(1.5) Complete la siguiente clase para tringulos definidos por 3 vrtices de coordenadas positivas: class Triangulo{ protected Punto p1,p2,p3; public Triangulo(Punto x,Punto y,Punto z){ } public double perimetro(){

} public double area(){

} } C)(1.5) Escriba una clase T que extienda la clase Triangulo con el mtodo public void dibujar(Graphics G) que dibuje el tringulo en G. Suponga que las coordenadas de los vrtices corresponden a las coordenadas horizontal y vertical de la ventana asociada al objeto G.

D)(1.5)Use la clase T en un programa que dibuje en una ventana de 100x100 pixeles un tringulo de vrtices en las coordenadas (10,20),(40,30),(50,15).

Seccin:___Apellido:_______________________Nombre:__________________Firma:___________ CC1001 Control N 2 Pregunta 2 sbado 2 de mayo de 2009 Tiempo Control: 2 hrs Con apuntes individuales Sin consultas - Contestar en esta hoja Los nmeros hexadecimales (base 16) se escriben con los 16 caracteres 0,1,,9,A,B,C,D,E,F que tienen los valores 0,1,,9,10,11,12,13,14,15 respectivamente. Por ejemplo, el nmero hexadecimal A3F9 se interpreta como 9x160 + 15x161 + 3x162 + 10x163 = 9x1 + 15x16 + 3x256 + 10x4096 = 9 + 240 + 768 + 40960 = 41977. A) (2 ptos) Escriba la funcin toDecimal de la siguiente clase que maneja nmeros hexadecimales positivos:
class Hexa{ private String s; //numero hexadecimal public Hexa(String x){s=x;}//ej de uso: new Hexa(A3F9) public Hexa(int x){} //ej de uso: new Hexa(41977) public String toString(){return s;}//entrega n hexadecimal como string public int toDecimal(){ //entrega n hexadecimal como n decimal

}} B) (4 ptos) Use la clase anterior en un programa que muestre y controle la siguiente ventana de 200x150:
class P extends Frame implements ActionListener{ static public void main(String[]args){new P().show();} private Label L1=new Label(decimal),L2=new Label(hexadecimal); private TextField T1=new TextField(),T2=new TextField(); private Button B=new Button(quit); public P(){ //constructor decimal |hexadecimal | quit

} public void actionPerformed(actionEvent x){ //Cada vez que se ingrese un n decimal en T1 debe mostrarse el correspondiente n hexadecimal en T2 //Cada vez que se ingrese un n hexadecimal en T2 debe mostrarse el correspondiente n decimal en T1

CC1001 Control N 2 Pregunta 1 sbado 2 de mayo de 2009 Tiempo Control: 1 hr 45 minutos A)(1.5)Escriba una clase que maneje puntos de coordenadas enteras positivas y se use en el sgte programa: Punto p=new Punto(2,1),q=new Punto(1,3); U.print(p.getX()+p.getY()+p.distancia(q));//escribe 2 1 2.236 class Punto{ private int X,Y; public Punto(int x,int y){//0.1 X=x; Y=y; //0.2 } public int getX(){ //0.1 return X; //0.1 } public int getY(){ //0.1 return Y; //0.1 } public double distancia(Punto x){//0.2 return Math.sqrt(Math.pow(X-x.X,2) + Math.pow(Y-y.Y,2));//0.6 } } B)(1.5) Complete la sgte clase para tringulos definidos por 3 vrtices de coordenadas positivas: class Tringulo{ protected Punto p1,p2,p3; public Triangulo(Punto x,Punto y,Punto z){ p1=x; p2=y; p3=z; //0.1 } public double perimetro(){ return p1.distancia(p2) + p2.distancia(p3) + p3.distancia(p1);//0.4 } public double area(){ double s=permetro()/2; //0.2 return Math.sqrt(s* //0.2 (s-p1.distancia(p2))*(s-p2.distancia(p3))*(s-p3.distancia(p1))); //0.6 }} C)(1.5) Escriba una clase T que extienda la clase Triangulo con el mtodo public void dibujar(Graphics G) que dibuje el tringulo en G, considerando que los vrtices corresponden a coordenadas de una ventana. class T extends Triangulo{ //0.1 public T(Punto x,Punto y,Punto z){ //0.2 super(x,y,z); //0.2 } public void dibujar(Graphics G){ int h1=p1.getX(), h2=p2.getX(),h3=p3.getX(); //0.3 int v1=p1.getY(), v2=p2.getY(),h3=p3.getY(); //0.3 G.drawLine(h1,v1,h2,v2); //0.1 G.drawLine(h2,v2,h3,v3); //0.1 G.drawLine(h3,v3,h1,v1); //0.2 }} D)(1.5)Use la clase T en un programa que dibuje en una ventana de 100x100 un tringulo de vrtices (10,20),(40,30),(50,15) en una ventan de 100x100 pixeles class Dibujo extends Frame{//0.1 static public void(String[]args){new Dibujo().show();}//0.2 public Dibujo(){setSize(100,100);}//0.2 public void paint(Graphics G){ //0.2 Punto a=new Punto(10,20),b=new Punto(40,30),c=new Punto(50,15);//0.3 T t=new T(a,b,c);//0.3 t.dibujar(G); //0.2 }}

CC1001 Control N 2 Pregunta 2 sbado 2 de mayo de 2009 Tiempo Control: 1 hr 45 minutos A) (2 ptos) Escriba la funcin toDecimal de la siguiente clase para nmeros hexadecimales positivos: class Hexa{ private String s; //para hexa-dgitos public Hexa(String x){s=x;}//ej de uso: new Hexa(A3F9) public Hexa(int x){}//ej de uso: new Hexa(41977) public String toString(){return s;}//entrega n hexadecimal como string public int toDecimal(){//entrega n hexadecimal como n decimal //inicializaciones: 0.1 int suma=0, potencia=1; //recorrer caracteres de nmero hexadecimal: 0.3 for(int i=s.length()-1; i>=0; --i){ //convertir hexadgito a decimal: 1.0 char c=s.charAt(i); int digito=0123456789ABCDEF.indexOf(c); //acumular dgito * potencia: 0.5 suma += digito*potencia; potencia *= 16; } //devolver resultado: 0.1 return suma; }} B) (4 ptos) public P(){ //constructor: 2.0 puntos //diagramar paneles: 1.0 Panel p1=new Panel(); p1.setLayout(new GridLayout(1,2)); p1.add(L1); p1.add(L2); Panel p2=new Panel(); p2.setLayout(new GridLayout(1,2)); p2.add(T1); p2.add(T2); //diagramar ventana: 0.7 setLayout(new GridLayout(3,1)); setSize(200,150); add(p1); add(p2); add(B); //activar escuchador: 0.3 T1.addActionListener(this); T2.addActionListener(this); B.addActionListener(this);
}

public void actionPerformed(actionEvent x){ //2.0 ptos //botn quit: 0.2 ptos if(x.getSource()==B) System.exit(0); //TextField T1: 1.0 ptos if(x.getSource()==T1){ String s=T1.getText(); int n=Integer.parseInt(s); Hexa h=new Hexa(n); T2.setText(h.toString()); } //TextField T2: 0.8 ptos else{ String s=T2.getText(); Hexa h=new Hexa(s); T1.setText(h.toDecimal()); } }

Vous aimerez peut-être aussi