Examen Final de Informática 1: Programación C

(15 de Febrero de 1996)

Ejercicio 1
Ejercicio 2
Ejercicio 3
Ejercicio 4

Ejercicio 1: Descomposición de un número en factores primos.

Se pide realizar un programa que descomponga un número dado en todos sus factores primos. Los factores primos de un número son aquellos números primos que son divisores exactos de dicho número. Por ejemplo, los factores primos del nº 24 son el 2, 2, 2 y 3 (no son factores primos el 4, el 6, el 8 o el 12, porque aunque son divisores exactos, no son primos).

El programa deberá pedir al usuario el número a descomponer y, seguidamente, escribirá por pantalla su descomposición:

Introduzca el número natural cuya descomposición desee obtener: 13860
2 2 3 3 5 7 11



El programa se llamará fprimos.c y se guardará en un directorio llamado Ejer1.

Una forma sencilla de realizar este programa es la siguiente:

  1. Se introduce por teclado el número cuya descomposición hay que calcular.
  2. Se buscan divisores exactos por orden creciente. Si se cumple la condición de resto cero se imprime el factor en cuestión. El proceso puede seguir sustituyendo el número anterior por su cociente exacto por el factor primo que se acaba de calcular.
  3. Téngase en cuenta que un mismo factor primo puede estar repetido varias veces, como se ve en el ejemplo anterior en el que el 2 y el 3 son factores primos dobles del nº 13860.

Solución: fichero fprimos.c


Ejercicio 2: Traductor de código morse a decimal.

El objetivo de este problema consiste en realizar un traductor de números enteros comprendidos entre 0 y 9 escritos en código morse a código normal. Guarda este programa con el nombre morse.c en el directorio Ejer2.

El código morse para los números decimales del 0 al 9 es el mostrado en la Tabla 1.

Tabla 1. Código morse para los números del 0 al 9.

NÚMERO
MORSE
1
.----
2
..---
3
...--
4
....-
5
.....
6
-....
7
--...
8
---..
9
----.
0
-----

Cada número en morse se representará en C por una cadena de 5 caracteres compuesta de puntos y rayas, según la tabla anterior.

Para este ejercicio debe crearse un fichero de datos llamado morse.dat que contenga una sucesión de 8 números enteros escritos en morse, según se indica en la Tabla 2. Cada línea del fichero contiene los cinco caracteres de un número entre el 0 y el 9. El programa deberá leer la cadena de caracteres que representa cada número en morse, identificará el número decimal al que corresponde, y posteriormente guardará dicho número decimal en una línea de un fichero de salida llamado numeros.dat, que deberá ser creado por el programa.

A continuación se muestra, a modo de ejemplo, el fichero de salida numeros.dat que se obtiene para el fichero de entrada morse.dat.

Tabla 2. Ejemplo de ficheros de entrada y salida.

morse.dat
numeros.dat
....-
4
-....
6
--...
7
..---
2
-----
0
----.
9
.----
1
...--
3

Solución: ficheros morse.c, morse.dat, numeros.dat


Ejercicio 3: Eliminar una fila y una columna de una matriz rectangular.

Este ejercicio consiste en realizar un programa que haga lo siguiente.

  1. En primer lugar se leerá por teclado el nombre de un fichero donde están los datos de la matriz (nº de filas m, nº de columnas n y elementos de la matriz). Se leerá el número de filas y de columnas.
  2. A continuación se creará la matriz mxn mediante reserva dinámica de memoria.
  3. Se leerán los valores de los elementos de la matriz del fichero de datos especificado.
  4. El programa preguntará al usuario qué fila y qué columna desea eliminar. El usuario introducirá estos datos por teclado. Se comprobará que la fila y la columna especificadas existen realmente (por ejemplo, en una matriz 5x3 no se puede eliminar la fila -1, ni la columna 4).
  5. Se creará otra matriz de tamaño (m-1)x(n-1), también con reserva dinámica de memoria. En esta matriz se copiarán los elementos de la matriz original, exceptuando los elementos de la fila y la columna eliminadas.
  6. Finalmente, se escribirán por pantalla las dos matrices, la original y el resultado de eliminar la fila y la columna especificadas.

Este ejercicio se guardará en un fichero llamado filcol.c, que a su vez se guardará en un directorio llamado Ejer3, dentro del directorio del examen.

Este ejercicio puede realizarse con funciones. No hay inconveniente en utilizar las funciones desarrolladas en las clases, prácticas o seminarios de la asignatura.

Solución: fichero filcol.c


Ejercicio 4: Calcular la unión e intersección de dos conjuntos de palabras.

Se pide realizar un programa que sea capaz de calcular la unión e intersección de dos conjuntos de palabras, utilizando reserva dinámica de memoria. El programa se guardará con el nombre conjunto.c en el directorio Ejer4.

Se recuerda que la intersección de ambos conjuntos es el conjunto dado por aquellas palabras que se encuentran tanto en el primer conjunto como en el segundo. Por su parte la unión es el conjunto de todas las palabras que pertenecen a uno y/u otro conjunto, eliminando las palabras repetidas. Esto se puede ver en el siguiente ejemplo:

Conjunto 1
Conjunto 2
Unión
Intersección
casacasacasa casa
casacasacasa casa
pezcasacasa pez
pezpezpez
pezavepez
paloperropez
ave
palo
perro

Se enumeran a continuación los pasos que se pueden dar para resolver este problema:

  1. Solicitar el número de palabras del conjunto 1.
  2. Introducir y almacenar las palabras del conjunto 1
  3. Solicitar el número de palabras del conjunto 2.
  4. Introducir y almacenar las palabras del conjunto 2.
  5. Recorrer el primer conjunto buscando si cada palabra del primer conjunto está también en el segundo. En el caso de que una palabra esté en ambos conjuntos se "marca" en la palabra del segundo conjunto (en la tabla anterior las palabras "marcadas" aparecen en cursiva), de manera que no participe en las búsquedas posteriores. Puede haber palabras repetidas y el algoritmo funciona.
  6. La unión estará formada por todas las palabras del primer conjunto y las que no están "marcadas" del segundo. La intersección estará formada por las palabras "marcadas" del segundo conjunto.

Solución: fichero conjunto.c

(Esta página ha sido introducida por Javier García de Jalón el 15 de Febrero de 1996)