Tareas ---------------------------------------------------------------------------------------------------- T1. Calculadora sencilla de artimética de precisión arbitraria Proyectos ---------------------------------------------------------------------------------------------------- P1. Juego: ¿Quién quiere ser millonario? en línea de comandos. Las preguntas se leen de archivos. P2. Juego: ¿Quién quiere ser millonario? con interfaz gráfica ---------------------------------------------------------------------------------------------------- Año bisiesto: dado un año ingresado por el usuario, indicar si es o no bisiesto. Variación: iprimir todos los bisiestos en un rango de años dado. ---------------------------------------------------------------------------------------------------- Programa que lea un arreglo de n reales de la entrada estándar, donde n es indicado por el usuario, y calcule: * el valor mínimo * el valor máximo * el promedio * la desviación estándar de los valores ingresados. Modifique el programa anterior para desplegar los números en orden ascendente y descendente. Almacene el arreglo en memoria de pila y en memoria dinámica sin fugas. ---------------------------------------------------------------------------------------------------- Programa que genera un horóscopo en dos formas: [1] Si se invoca sin parámetros, genera un horóscopo aleatorio con los 12 signos para hoy. [2] Si se envía la fecha de nacimiento del usuario por parámetro, imprimirá su signo zodiacal y su horóscopo para hoy. Los textos del horóscopo son generados aleatoriamente a partir de un archivo de oraciones. El programa escogerá entre cuatro y seis oraciones aleatorias por cada signo zodiacal. La última oración será el número de la suerte, generado también aleatoriamente entre 00 y 99. ---------------------------------------------------------------------------------------------------- Casino: Programa de apuestas Supóngase que un jugador ingresa al casino con un monto constante, digamos $100. El casino le da la bienvenida con varios tipos de juegos: monedas, cartas, dados. El jugador escoge uno de los juegos en los que tendrá varias interacciones. En cada interacción indicará por lo que apuesta y la cantidad a apostar. Si acierta el Casino le duplica, triplifica o n-plica lo apostado (donde la probabilidad de acertar es 1/n), de lo contrario, perderá lo apostado. Por ejemplo, si acierta en: Tirar la moneda: recibirá el doble Carta mayor o menor: recibirá el doble. Adivinar el dado: seis veces. ---------------------------------------------------------------------------------------------------- Impuesto de renta: monto a tributar Programa que recibe el tipo de contribuidor (persona física o jurídica), el ingreso, los gastos operativos y le indica un detalle de cuánto debe pagar en cada rubro según los niveles definidos por el Ministerio de Hacienda. ---------------------------------------------------------------------------------------------------- Descomposición de primos Escriba un programa que recibe un número entero positivo y despliega todos los factores primos como un producto de potencias. Versión 1: su solución puede ser ineficiente. Versión 2: una solución eficiente. ---------------------------------------------------------------------------------------------------- Juego palabras desordenadas Escriba un programa que tome una palabra al azar de un diccionario del idioma, desordene sus letras y la presente al usuario, el cuál deberá adivinarla. Si el usuario acierta obtiene 10 puntos por cada letra que compone la palabra y los acumulará en su marcador. Si no acierta la palabra de la computadora, pero la palabra intentada existe en el diccionario, obtendrá 5 puntos por cada letra de la palabra, los cuales se acumularán en su marcador. El programa permitirá al jugador continuar adivinando la misma palabra. Si el jugador ingresa un signo de interrogación (?), se le revelará una letra correcta de la palabra. La letra es escogida al azar, y se le descontarán 20 puntos por ella. Si el jugador vuelve a ingresar un signo de interrogacion (?), se le revelará una segunda letra de la palabra escogida al azar, y así sucesivamente. Si se le ha revelado la palabra completa al jugador, el juego generará una nueva palabra al azar. Si el usuario no sabe la palabra, podrá ingresar un texto en vacío, en cuyo caso no acumulará ningún punto en el marcador. El juego revelará su palabra secreta y continuará generando una nueva palabra al azar. El juego termina cuando el jugador ingrese un símbolo de admiración (!). En cada interacción se mostrarán las letras desordenadas de la palabra en juego y el marcador acumulado del jugador. ---------------------------------------------------------------------------------------------------- Juego de series numéricas Escriba un juego que permite al usuario adivinar en cada iteración, un valor de una serie numérica escogida al azar. Por ejemplo: 2, 4, 8, 16, __ (2^n) 1, 3, 5, 11, 20, __, 70, 135 (n + 2^n) 1, 3, 2, 5, 6, 8, 24, __, 13 (Factorial, Fibonacci) El juego debe ser fácilmente extensible, de tal forma que agregar nuevos tipos de series no implica reprogramar el juego, sino agregar una clase polimórfica. Cuando se inicia el juego, se preguntará el nombre del jugador y su marcador histórico será 0. El juego le presentará series seleccionadas aleatoriamente y el jugador debe responder con un número. Cada serie tiene un puntaje en proporción a su dificultad. Si el jugador acierta el número incógnito en la serie, acumulará los puntos de la serie. El juego concluirá cuando el jugador ingrese el símbolo de admiración (!) en lugar de un número. Para su solución implemente una clase controladora Juego que representa el juego como un todo y contiene a los demás objetos. Un objeto Jugador mantiene el nombre del jugador y su puntaje histórico, el cual debe almacenarse en un archivo para que sea persistente. Implemente una clase abstracta Serie, la cual tiene un puntaje de dificultad y dos métodos virtuales puros: imprimir() y calificar(), el segundo recibe la respuesta del jugador y retorna el puntaje obtenido. En su solución implemente al menos diez tipos de series de distinta complejidad, cada uno como una Serie concreta. Ejemplos de series: operaciones aritméticas (sumas), primos, potencias de primos, factoriales, Fibonacci, o combinaciones de ellas. ---------------------------------------------------------------------------------------------------- Dado un diccionario (ej.: el de LibreOffice), implementar un programa que genere sopas de letras (palaberintos) con algunos parámetros, como las dimensiones nxm en letras, y la cantidad de palabras que se deben ocultar en la sopa. Si no se especifica, el programa debe colocar tantas palabras como pueda, y preferiblemente aquellas de mayor longitud. Las palabras deben aparecer en cualquiera de las tres direcciones: horizontal, vertical y diagonal, y en cualquier orientación. ---------------------------------------------------------------------------------------------------- Se hacen equipos de tres estudiantes. Cada uno crea un programa jugador inteligente a un juego dado (tablero, naipes, ...). Cada jugador automático respeta un protocolo de comunicación a través de la red. A la hora de la revisión, se hace una eliminatoria (campeonato). Los jugadores automáticos competirán y se sabrá cuáles son los tres ganadores. El profesor debe implementar un juez automático, el cual debe controlar el tiempo y las reglas del juego. Este proyecto ejercita IA, redes, programación distribuida, el trabajo en equipo. ---------------------------------------------------------------------------------------------------- Escriba un convertidor de unidades, dado por una clase Magnitud, la cual posee un valor y una unidad. Clases hijas pueden representar longitudes, áreas, volúmenes, masa, tiempo y moneda. ----------------------------------------------------------------------------------------------------