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