Document related concepts
Transcript
CC1001-Computación I – Control Recuperativo – jueves 31 de mayo de 2007 - Tiempo: 2 horas Con apuntes individuales – Sin consultas - Contestar en hojas separadas Pregunta 1 a) (1.5 puntos) Escriba un método (función) de encabezamiento static public int divisor(int i, int x) que entregue el i-ésimo divisor de x. Por ejemplo, divisor(1,9) entrega 1, divisor(2,9) devuelve 3, divisor(3,9) entrega 9, y divisor(4,9) devuelve 0, para indicar que no existe un 4º divisor de 9. b) (1.5 puntos) Escriba una función que reciba un número entero positivo y entregue true si es perfecto, o false si no lo es. Un número es perfecto si es igual a la suma de sus divisores (excluyendo el mismo número). Por ejemplo, esPerfecto(6) devuelve true porque 6=1+2+3. Por otro lado, esPerfecto(9) entrega false porque 9≠1+3. Nota. Para recuperar los divisores del número debe usar la función divisor (escrita en la parte a). c) (3 puntos) Escriba un programa que encuentre los primeros 5 números perfectos. Al respecto, los números perfectos tienen la forma nº=2k-1(2k-1), por lo tanto, se debe probar con valores sucesivos de k, a partir de 2. La lista de 5 números perfectos debe escribirse en la siguiente forma: k=2 nº=6=1+2+3 k=3 nº=28=1+2+4+7+14 . . . Notas. Para algunos valores de k el número resultante no es perfecto. Por ejemplo para k=4, nº=90 no es perfecto porque 90≠1+2+3+5+6+9+10+15+18+30+45=144 Para verificar si un número es perfecto debe usar la función esPerfecto (escrita en la parte b) Para recuperar los divisores de un número perfecto debe usar la función divisor (escrita en la parte a) Pregunta 2 La clase Partes permite operar con partes de un string de acuerdo a los métodos indicados en la siguiente tabla: ejemplo significado encabezamiento Partes a=new Partes Crea un objeto que contiene un string cuyas partes están Partes(String x,char y) (“ab:cde:f” , ’:’) separadas por el carácter : a.numero() entrega el número de partes del objeto. Por ej: 3 int numero() a.sacaPrimero() Entrega la primera parte del objeto y la elimina. Por String sacaPrimero() ejemplo, la 1ª vez entrega y elimina “ab”, la 2ª vez “cde”, la 3ª “f”, la 4ª entrega el valor null a)Escriba los métodos número y sacaPrimero de la clase Partes considerando la sgte representación de los objetos: class Partes{ protected String s; protected char c; //carácter separador de las partes … } b)Escriba un programa que permita obtener estadísticas de notas de todos los alumnos del primer año en cualquiera de las 5 asignaturas, de acuerdo a la siguiente interfaz con el usuario: Button Algebra Calculo Button Button Computación Física Button Button Ingeniería Quit Button Label Nº de Aprobados=nº % de aprobados=nº Label La información de los alumnos se encuentra en el archivo “2007.txt”. Cada línea contiene el nombre y el promedio de las notas en Álgebra, Cálculo, Computación, Física e Ingeniería de un alumno, en la forma indicada en el siguiente ejemplo: “Ana Ríos,4.5,5.3,4.2,3.8,6.3” Notas Para recuperar las notas debe usar los métodos de la clase Partes. Los aprobados son los alumnos con nota ≥ 4.0