Está en la página 1de 2

Programación 1

Examen final enero 2020


(1o de Grados: IT, SE, SI, ST, TT, TT+Mat)
E.T.S.I. TELECOMUNICACIÓN
Dpto. de Lenguajes y Ciencias de la Computación

Apellidos, Nombre Núm PC Hora Entrega

Instrucciones para la realización del examen:


El código fuente que se entregue para cada ejercicio deberá guardarse en un fichero con nombre
problemaX.cpp, siendo X el número de ejercicio. Cada fichero deberá comenzar con un comentario con
el nombre, apellidos, ordenador, grado.
Se debe crear una carpeta [enero2020] dentro de [Documentos] en Windows. En esta carpeta se debe
dejar una copia de los ejercicios al terminar el examen (archivos cpp).
Al finalizar el examen se deberá escribir la hora de entrega en el enunciado y avisar al profesor para que
haga la copia del examen.

Enunciado

1. (3.5 puntos) Escribir un subprograma que recibe un array de enteros de longitud variable, mayor
que 2 y como máximo 100, y devuelve el número de enteros necesarios para completar los valores
del array de manera que estén todos los números existentes entre el menor y mayor del array.
En el array puede haber valores repetidos. Se muestran varios ejemplos de arrays de entrada y
el valor que deberı́a devolverse:
TAMAÑO ARRAY SALIDA
.......... ............. ........ ...........................................................
6 -4 5 6 5 3 2 6 ya que entre -4 y 6 hay un total de 11 números,
de los cuales 5 están en el array por lo que faltarı́an 6
3 1 0 -2 1 ya que entre -2 y 1 hay 4 números (-2,-1,0,1)
y en el array están 3 de estos, por lo que sólo falta 1 (el -1)
5 19 19 12 12 0 17 entre 0 y 19 hay 20 números,
el array tiene 3 de esos número, faltan 17
Se pide:

a) Definir el tipo Tarrayincompleto


b) Escribir un subalgoritmo que lea el tamaño y los valores de un array incompleto según este
prototipo:
void leer array incompleto(Tarrayincompleto &a);
c) Escribir el subalgoritmo descrito en el enunciado según el prototipo:
unsigned total valores faltan(Tarrayincompleto a);
d ) Escribir el programa principal que usando estos subalgoritmos lea un array incompleto,
calcule el total de valores necesarios para completar el rango del array y muestre este valor.

2. (3.5 puntos) Un texto necesita ser encriptado siguiendo el siguiente esquema de encriptación:

a) Los espacios se eliminan.


b) Los caracteres se escriben en una matriz cuadrada cuya dimensión tiene la restricción de
que, por ejemplo, si la longitud del texto es 54, entonces la matriz tendrá una dimensión
de 8x8 puesto que la raı́z cuadrada de 54 está entre 7 y 8 (en una de 7x7 no cabrı́an). Hay
que inicializar dicha matriz con el carácter asterisco.

1
c) El mensaje encriptado se obtiene mostrando los caracteres de cada columna (incluidos los
asteriscos si los hubiera) e insertando un espacio entre cada columna.

El texto tendrá un máximo de 400 caracteres. Por ejemplo, para el texto:

if man was meant to stay on the ground god would have given us roots

de 54 caracteres (una vez eliminados los espacios en blanco), la matriz de 8x8 serı́a:

ifmanwas
meanttos
tayonthe
groundgo
dwouldha
vegivenu
sroots**
********

y el mensaje encriptado se mostrarı́a ası́:

imtgdvs* fearwer* mayoogo* anouuio* ntnnlvt* wttddes* aohghn** sseoau**

Escribir un subalgoritmo que reciba una cadena (string) y devuelva la cadena codificada según
las instrucciones anteriores. Escribir un programa que lea una frase, la codifique usando el subal-
goritmo escrito y muestre el valor devuelto.

3. (3 puntos) Escribir un programa que dado un número natural positivo devuelva otro número
natural en el cual sus cifras estén ordenadas en orden creciente. Por ejemplo.
Número de entrada Número de salida
................... .................
56381 13568
760 67
1353 1335
La particularidad del ejercicio es que debe ser realizado en base al siguiente proceso que consta
de varios pasos:

a) Implementar un subprograma denominado calculoFrecuenciaDigitos que reciba un núme-


ro natural num y y devuelve en un párametro de salida la frecuencia de aparición de cada
dı́gito en el número. Para ello, previamente hay que definir un tipo de datos Tfrecuencias
en el que se almacenarán estas frecuencias. Por ejemplo, para el número 11434 el subalgorit-
mo calcuları́a que el dı́gito 1 aparece 2 veces, el dı́gito 3 aparece 1 vez, el dı́gito 4 aparece 2
veces y el resto de dı́gitos 0 veces. Importante: no se solicita que se escriba esto en pantalla.
b) Implementar un subprograma denominado componerNumero que reciba una variable del tipo
Tfrecuencias con los frecuencias de los dı́gitos de un número tal y como se ha mencionado
anteriormente, y devuelva un número que se corresponda con el número original pero en el
cual las cifras están ordenadas, siguiendo los ejemplos mostrados anteriormente.
c) Escribir un programa principal que lea un número, y escriba en pantalla el equivalente en el
cual sus cifras estén ordenadas en orden creciente, utilizando para ello los dos subprogramas
indicados anteriormente.

También podría gustarte