Aquí puedes ver el resumen/resultado de todos los envíos realizados durante el primer cuatrimestre de FP1 del curso 2024-2025 por los alumnos del doble grado en Matemáticas e Informática de la Facultad de Informática de la UCM.
El cuatrimestre está dividido en distintos periodos de tiempo no necesariamente iguales pues se corresponden más con secciones temáticas que con semanas o quincenas.
Cada periodo tiene su propia pestaña donde se ven los detalles (entre ellos el intervalo de fechas correspondiente a ese periodo y los problemas aconsejados en él).
Para cada periodo se muestra una clasificación con los usuarios que han resuelto más ejercicios (y en caso de empate, en menos tiempo). En la lista sólo aparecen los envíos realizados por alumnos del grupo del doble grado en Matemáticas e Ingeniería Informática. Si tienes usuario en el portal, eres alumno de este grupo y tus envíos no aparecen, ponte en contacto con el profesor.
La tabla que aparece a continuación condensa el número total de problemas resueltos de cada periodo por cada usuario.
Problemas para empezar a conocer el juez. Todos ellos se resuelven mediante expresiones o un bucle for sencillo.
Hay alguno en que la parte más difícil es descubrir cómo resolverlos con lápiz y papel, no cómo escribirlo en C++.
Problemas que se resuelven con expresiones y con instrucciones condicionales. En algunos hace falta formatear la salida, fijate bien como se debe escribir el resultado. Recuerda los manipuladores std::setw(n) y std::setfill(c) de la librería iomanip. Para leer una hora de la entrada, debes leer primero un valor entero que corresponde con las horas, luego un carácter para leer los dos puntos, luego otro entero para leer los minutos etc. Para ello declara una variable de tipo char y utilízala para leer los dos puntos cuando corresponda.
Fíjate en el tipo de entrada que tiene el problema y utiliza la plantilla adecuada para cada caso. Puede ser por número de casos, por centinela o por casos ilimitados. Las plantillas las puedes encontrar en el campus virtual. En la plantilla por casos ilimitados fíjate que se debe realizar la lectura de un dato antes de preguntar si cin está en modo fallo.
Problemas que se resuelven con expresiones, instrucciones condicionales y bucles sencillos.
Fíjate en el tipo de entrada que tiene el problema y utiliza la plantilla adecuada para cada caso. Puede ser por número de casos, por centinela o por casos ilimitados. Las plantillas las puedes encontrar en el campus virtual.
Algunos de estos problemas ya empiezan a complicarse. Se puede necesitar el algoritmo del cálculo del m.c.d. (visto en un problema del juez), e incluso en alguno un bucle anidado (un bucle dentro de otro bucle)
Fíjate en el tipo de entrada que tiene el problema y utiliza la plantilla adecuada para cada caso. Puede ser por número de casos, por centinela o por casos ilimitados. Las plantillas las puedes encontrar en el campus virtual.
En algunos de estos problemas es necesario guardar los datos en un array para después ordenarlos.
Para ordenar los datos de un array debéis utilizar la función sort de la librería algorithm. Cómo estamos utilizando arrays y no vectores, la instrucción adecuada es: std::sort(v,v+TAM); siendo v el array y TAM el número de elementos del array. La instrucción ordena los valores en orden creciente desde el cero hasta TAM.
Para otros tipos de ordenación consultar las transparencias de clase.
Estos problemas son más difíciles que los propuestos hasta ahora. Se proponen para los alumnos que quieran avanzar en el campo de la algoritmia.
Casi todos los problemas requieren guardar los datos en un array. En muchos de ellos hay que guardar información de la parte ya recorrida del vector en alguna variable y en algunas ocasiones para obtener una solución eficiente es necesario ordenar los datos.
El mínimo común múltiplo de dos valores se calcula utilizando el algoritmo del máximo común divisor que ya se practicó en un problema del juez. mcm(a,b) = a * (b / mcd(a,b)). Fijaros que se divide b entre el valor del máximo común divisor antes de multiplicarlo por el valor de a. Esto es posible porque la división siempre será exacta y asi utilizamos valores más pequeños y evitamos que haya desbordamiento de las variables.
Continuamos con problemas avanzados para el curso. Se proponen únicamente para los alumnos que quieran avanzar en el campo de la algoritmia.
Para resolverlos utilizaremos arrays, ordenación y en algunos el tipo stringstream visto en clase. En algunos de ellos se require manejo de las cifras de un número.