CC10A-Computación I - Control 2 - jueves 14 de junio de 2001
Tiempo: 2hrs 30 mins - CON apuntes - SIN Consultas

  1. La siguiente clase permite asignar y recuperar los valores de una terna de números enteros:

       class Terna
       {
          int a,b,c;
    
          public Terna()
          { a=0; b=0; c=0; }
    
          public void set1(int x)
          { a=x; }
    
          public void set2(int x)
          { b=x; }
    
          public void set3(int x)
          { c=x; }
    
          public int get1()
          { return a; }
    
          public int get2()
          { return b; }
    
          public int get3()
          { return c; }
       }
    

    1. Escriba la clase Triangulo que extienda la clase Terna agregando los siguientes métodos:

      ejemplo resultado significado
      Triangulo() - constructor que inicializa con ceros los valores de los tres lados.
      T.esTriangulo() boolean true si T corresponde a un triangulo o false si no (3 números positivos forman un triángulo si todas las sumas de 2 de ellos son mayores que el 3º)
      T.ladosIguales() int cantidad de lados iguales (0, 2 o 3) del triángulo T
      T.graficar(x) void grafica el triángulo T de color x (String "rojo","azul"o"verde")
      Nota. NO debe escribir el método graficar

    2. Escriba un programa que dibuje 100 triángulos (de lados enteros entre 1 y 100 generados al azar) de modo que los equiláteros (tres lados iguales) se dibujen de color rojo, los isósceles (dos lados iguales) de color azul, y los escalenos (todos los lados distintos) de color verde.

      Nota. Recuerde que Math.random() devuelve un Nº real de tipo double en el rango [0,1[

  2. La siguiente figura muestra la interfaz de un programa (Frame) que permite apoyar el recuento de votos de una elección con dos candidatos ("Rosa María" y "José Manuel"):

    Label
    Button
    Button
    Label
    Button
    Candidato Nº de Votos
    Rosa María 0
    José Manuel 0
    Total 0
    descontar último voto recomenzar
    Label
    TextField o Label
    TextField o Label
    TextField o Label
    Button

    Escriba la clase que controle la interfaz anterior de acuerdo a las siguientes reglas:

    1. (ponderación 2/3) Escriba un método de encabezamiento int reordenar(int n, int[] x, int y) que reordene los primeros n elementos del arreglo x en dos grupos: a la izquierda los divisibles por y, y a la derecha los que no son divisibles por y. El método debe entregar adicionalmente como resultado la cantidad de elementos que son divisibles por y. Por ejemplo:
        int[] a = { 5, 8, 6, 9, 3, 2, 4 }; //arreglo de 7 elementos
      int i = reordenar(6, a, 2); //reordenar los primeros 6 elementos del arreglo a. deja el arreglo a con los valores {8,6,2,5,9,3,4} y la variable i con el valor 3
    2. (ponderación: 1/3) escribir un programa que use el método anterior para escribir todos los números pares entre 1 y 1000 que son divisibles por 3 y por 5