Examen de Fundamentos de Programación I URV 2015 · Segundo Parcial. Evaluación Continua 2015-2016

Examen de Fundamentos de Programación I de la URV (Grado en Ingeniería Informática) 2015, Segundo Parcial. Evaluación Continua 2015-2016: 2 problemas con…

Temas del examen: Disseny del programa principal i resolució integrada de problemes

Ejercicio 1 · Disseny del programa principal i resolució integrada de problemes

Ejercicio 1 (5 puntos). Campeonato de F1

La organización del Mundial de Fórmula 1 necesita procesar y almacenar información estadística de sus competidores. Para cada uno de los pilotos participantes se registran los siguientes datos básicos (pudiendo incorporar campos adicionales si resulta oportuno):

Nombre y apellidos

Número identificativo (dorsal)

Fecha de nacimiento (día, mes, año)

Nombre de la escudería

Una tabla con el puesto conseguido en cada uno de los 20 grandes premios disputados. En caso de no finalizar una carrera, constará el valor 0; si no llegó a tomar parte en la prueba, el valor registrado será -1.

Puntos acumulados en total (campo derivado que deberá calcularse).

El baremo de puntuación vigente desde 2010 otorga puntos exclusivamente a los diez primeros clasificados en cada carrera, tal como refleja la tabla adjunta:

Posición

1ª

2ª

3ª

4ª

5ª

6ª

7ª

8ª

9ª

10ª

Puntos

25

18

15

10

8

6

5

3

2

1

Dicha escala se representará internamente como un vector de 10 elementos enteros inicializado con los valores correspondientes:

var

puntos: taula[10] de enter:= {25, 18, 15, 10, 8, 6, 5, 3, 2, 1};

fvar

Consideraciones técnicas: Las cadenas de texto tienen un tamaño máximo de 60 caracteres (MAX_P) y finalizan con el centinela '\0'. No existe la primitiva de impresión de cadenas escriure(cadena), por lo que debe implementarse. Se dispone además del siguiente procedimiento auxiliar ya desarrollado:

acció llegir_cadena (var cl:taula de caràcters, dim:enter, sentinella:caràcter);

a.

Definir las estructuras de datos y tipos necesarios para albergar la información de los pilotos, asumiendo un máximo de 25 inscritos (pudiendo ser inferior).

b.

Especificar la cabecera (perfil del subprograma) encargada de cargar los datos de los pilotos en la estructura diseñada y retornar cuántos participantes se han inscrito en total. Indicar claramente tipo de módulo (acción o función), identificador, parámetros (especificando paso por valor o referencia) y tipo de retorno si procede. (No es necesario codificar su cuerpo).

c.

Definir e implementar en pseudocódigo los siguientes subprogramas:

d.

Diseñar el algoritmo principal que orqueste las llamadas pertinentes para: cargar el censo, mostrar la ficha del campeón y consultar puntos por nombre de participante.

Ejercicio 2 · Disseny del programa principal i resolució integrada de problemes

Ejercicio 2 (5 puntos). Mensajes electrónicos sospechosos

Se dispone de un conjunto de correos electrónicos introducidos de forma secuencial por teclado con el objetivo de evaluar si alguno de ellos pudiera estar vinculado a comunicaciones delictivas o de terrorismo internacional.

Para facilitar el análisis se cuenta con una lista predefinida de términos de alerta o palabras clave que se obtiene invocando una función previamente desarrollada con la siguiente especificación:

constants

MAX_P:= 60;

MAX_MOTS:= 100;

fconst

tipus

registre paraula_tipus és

mot: taula [MAX_P] de caràcters;

mida: enter;

fregistre

ftipus

funció llegir_mots_clau (var mots_clau: taula de paraula_tipus, dim: enter) retorna enter;

Dicha función almacena las palabras clave en la tabla y devuelve la cantidad real leída. No debe programarse este subprograma.

Formato del flujo de entrada:

La secuencia contiene una cantidad indeterminada de mensajes y se cierra con el centinela global "FINAL" (situado inmediatamente a continuación de la marca "FITEXT" del último correo).

Cada mensaje consta de una cabecera seguida del cuerpo del texto, finalizando este con la marca "FITEXT".

La cabecera contiene, separados por espacios:

Dirección de correo del emisor (cadena de hasta 60 caracteres).

Dirección de correo del receptor (hasta 60 caracteres).

IP de origen (secuencia de caracteres).

IP de destino (secuencia de caracteres).

Fecha del mensaje (día, mes y año como números enteros).

El cuerpo del mensaje contiene frases separadas por puntos y palabras separadas por espacios (sin signos de puntuación adicionales ni acentos). Cada palabra individual tiene un tamaño máximo de 60 caracteres.

Si una palabra clave se repite en el texto, se computa tantas veces como aparezca.

Un mensaje se cataloga como sospechoso si el porcentaje de palabras clave detectadas en su texto supera un umbral fijado por el usuario (solicitado previamente por teclado antes de procesar los mensajes).

Módulos de soporte disponibles (ya implementados):

funció paraules_iguals (p1, p2: paraula_tipus) retorna booleà; (compara sin distinguir mayúsculas/minúsculas).

acció copiar_cadena (p_ori: paraula_tipus, var p_desti: paraula_tipus);

acció escriure_paraula (paraula: paraula_tipus);

a)

Definir las estructuras de datos indispensables para resolver el problema.

b)

Desarrollar el algoritmo modular para procesar la entrada por teclado y proporcionar en la salida estándar:

a. La cabecera detallada (fecha en formato d/m/a, emisor, destinatario, IP origen e IP destino) de cada uno de los correos clasificados como sospechosos.

b. La cantidad total de mensajes sospechosos detectados.

También puedes estudiar por temas

Practica un tema con ejercicios de los exámenes de todos los años, mezclados.

Ver los 7 temas

Otras convocatorias de 2015

Examen Segunda Convocatoria 2015-2016 (2015)