---
title: FPI Práctica 08 - ETSIT - URJC
---
Fundamentos de la programación y la informática\
Grados en ingeniería aeroespacial, turno de tarde, 2020-2021\
[Escuela Técnica Superior de Ingeniería de
Telecomunicación](http://www.urjc.es/universidad/facultades/escuela-tecnica-superior-de-ingenieria-de-las-telecomunicaciones)\
[Universidad Rey Juan Carlos](https://www.urjc.es)
# Práctica 8.1. Uso básico de un Array
Escribe un programa en el fichero `~/fpi/practica08/tabla.pas` que:
1. Genere `N` números reales aleatorios mayores o iguales que 0 y
menores que `Valor_maximo`, donde `N` será una constante global y
`Valor_maximo` será una constantes local del cuerpo del programa
principal. Dale a estas constantes el valor que quieras.
2. Guarde los resultados en un array.
3. Muestre todos los valores almacenados en el array.
4. Muestre todos los valores del array, en orden inverso.
5. Calcule (y muestre) la suma y la media de los valores del array.
6. Calcule (y muestre) el máximo y el mínimo de los valores del array.
7. Muestre solamente los valores del array mayores o iguales que
[*K* \* *valor*\_*maximo*]{.math .inline}, donde [*K*]{.math
.inline} será un número real mayor que 0 y menor o igual que 1.
Ejemplo: si [*K* = 0.9]{.math .inline} y el máximo es 1000, se
mostrarán los valores mayores o iguales a 900.
8. [*K*]{.math .inline} será una constante local del cuerpo del
programa principal. Si no se cumple la precondición de ser mayor que
0 y menor o igual a 1, el programa mostrará un mensaje y finalizará.
# Práctica 8.2. Búsqueda de matriz aleatoria
Escribe un programa en el fichero `~/fpi/practica08/busca_matriz.pas`
que:
- Genere matrices de números enteros, donde cada elemento sea el
resultado de tirar un dado. El número de caras del dado está fijado
en una constante en el cuerpo del programa principal.
- Genere todas las matrices necesarias hasta conseguir una tal que la
media aritmética de sus valores coincida con la esperanza matemática
del dado empleado.
- Una vez encontrada, el programa indicará cuantos intentos fueron
necesarios.
Por ejemplo, una ejecución podría ser algo similar a esto:
Esperanza matemática de un dado de 6 caras: 3.50
Buscando una matriz de 2x3 cuyo valor promedio coincida con la esperaza matemática
6 4 5
4 2 4
Media obtenida: 4.17
4 4 4
6 2 2
Media obtenida: 3.67
4 4 4
1 3 3
Media obtenida: 3.17
6 3 2
2 2 1
Media obtenida: 2.67
1 6 4
3 3 5
Media obtenida: 3.67
5 3 2
3 2 4
Media obtenida: 3.17
5 3 1
4 2 6
Media obtenida: 3.50
Conseguido en 7 intentos
# Práctica 8.3. Valores únicos
Escribe un programa en el fichero `~/fpi/practica08/unicos.pas` que
rellene una matriz con valores aleatorios de un dado, de forma que no
haya ningún valor repetido. El programa comprobará la precondición de
que el número de caras sea mayor o igual que el número de elementos en
la matriz, y mostrará un error o hará el cálculo, según corresponda.
Una forma muy sencilla de resolver el problema es:
- Inicialmente rellenar la matriz con valores *vacíos* (En este caso,
cero, que es un valor imposible para un dado).
- Para cada posición, tirar un dado las veces necesarias hasta que
salga un valor que no esté en ninguna posición de la matriz.
Aclaración adicional:
- Empieza escribiendo una función que indique si cierto número existe
o no en la matriz. Pruébala por separado. Cuando parezca funcionar
correctamente, escribe el procedimiento que, para cada posición,
genere números hasta encontrar uno que sea nuevo en la matriz.
# Práctica OPTATIVA 8.4. Valores únicos, algoritmo mejorado
Si deseas mejorar tu nota, escribe un programa en el fichero
`~/fpi/practica08/unicos2.pas` que resuelva el problema del programa
anterior con un algoritmo más eficiente: Cada vez que lance un dado, en
vez de comprobar si existe el valor en cualquier posición de la matriz,
haz que sea buscado solamente en las posiciones que ya están rellenas.
Observa que en este caso no hace falta iniciar la matriz a cero.
# Práctica 8.5. Sustitución de espacios
Escribe un programa llamado `~/fpi/practica08/quitaespacios.pas` que
tenga una función que reciba una cadena, y que devuelva esa misma
cadena, pero reemplazando los espacios por barras bajas (\_)
# Práctica 8.6. Repetición de letras
Escribe un programa llamado `~/fpi/practica08/repiteletras.pas` que
tenga una función que
- Reciba una cadena y un numero entero *n*.
- Devuelta otra cadena, con el mismo contenido, pero repitiendo cada
letra *n* veces.
Ejemplo, si recibe *hola mundo* y 3, debe devolver *hhhooolllaaa
mmmuuunnndddooo*
# Revisión de los nombres de los ficheros
Ejecuta `~mortuno/revisa practicas fpi` para comprobar que los nombres
de los programas son los correctos.