
















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: M.T.P., Profesor: Rafael Medina, Carrera: Ingeniería en Informática, Universidad: UCO
Tipo: Exámenes
1 / 24
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!

















M ETODOLOGÍA Y TECNOLOGÍA DE LA PROGRAMACIÓN
25 1975 23.5 23.6 45.9 34.9 25.9 34.7 34.8 12.8 89.5 12.8 12.6 5. 34.6 45.6 56.1 32.1 1.2 23.6 7.8 7.9 15.4 16.5 12.5 17. ....... ....... Implementar un programa en C que realice de manera secuencial (sin usar menú) las siguientes acciones: a. Lectura de los datos de lluvia del fichero y almacenamiento de los mismos en una matriz dinámica. b. Almacenamiento en un vector de los datos medios mensuales de lluvia para cada uno de los meses del año. c. Almacenamiento en un vector de los datos anuales de lluvia para cada uno de los años de la serie. d. Obtención del més y del año en el cual se haya producido la precipitación máxima y la mínima. e. Almacenamiento de los datos de lluvia mensuales correspondientes a los años cuya precipitación anual se ainferior a 300 mm. en un fichero binario denominado “sequia.bin”.
Cada uno de los apartados se implementará en una función, y todas han de ser de tipo void.
Cada uno de los apartados se implementará en un función.
1.- Se tiene definida una variable int x , global , y una variable int x , local en el interior del main. ¿Cuál tiene prioridad? a) La global b) La local c) Dentro del main la local y fuera del main la global
2.- Indica cual de las siguientes afirmaciones sobre los métodos de ordenación es correcta. a) El método quicksort es el más rápido de todos, independientemente del número de elementos a ordenar. b) El método de selección tiene un mejor comportamiento que el quicksort cuando el número de elementos a ordenar es relativamente pequeño. c) El método burbuja es el mejor de los métodos de orden n 2.
3.- Se tienen las siguientes declaraciones: int pepe(void); void juan(int);
¿Es correcta la expresión juan(pepe()) escrita dentro de main()? a) No, si se quiere pasar el valor que devuelve pepe a juan es necesario escribir x=pepe(); juan(x); b) Si c) Si, pero la expresión no debe estar en el main() sino en la zona de declaraciones globales.
4.- Se tienen las siguientes líneas de código. El propósito de las mismas es recoger en la dirección del campo x de la estructura, la dirección del campo y de la estructura. struct dato {int x; int y;}; struct dato x, *y; y = &x; &(x.x)=y->y;
¿Cuál es correcta entre las respuestas? a) Todo es correcto. b) Hay dos errores. No puede ser que haya una variable “x” de estructura cuando hay un campo llamado “x” en la estructura, y el valor del campo “y” es lo que se coloca en la dirección del campo “x”. c) Hay un error, ya que no se puede modificar la dirección del campo x.
5.- ¿Cual de las siguientes afirmaciones es correcta con relacion al siguiente esquema? for (i=0;i;i=i+3) { i=i-3; } a) El esquema nunca finaliza, es infinito. b) No se entra en el esquema. c) Se entra la primera vez y se abandona tras la primera iteración.
6.- La instrucción “ break ” dentro de un switch a) Sirve para abandonar el esquema switch en cuanto se encuentra. b) Es obligatorio su uso dentro de cada “ case ”. c) Si no se utiliza el esquema switch funciona como un esquema iterativo.
7.- El anidamiento de esquemas condicionales del tipo if-else dentro de un programa a) Tiene como límite máximo 50 anidaciones dentro del mismo esquema. b) No tiene ningún límite en cuanto al número de anidaciones. c) Existe un límite en el número de anidaciones que depende del compilador que se utilice, aunque este límite es tan alto que en la practica no hay que preocuparse.
8.- Si x es una variable de tipo int y p es una variable de tipo int * , la instrucción &(&x)=p ; a) No es correcta porque debe ser p=&(&x); b) No es correcta. c) Es correcta.
9.- Una función debe recibir un parámetro que es un número real, para utilizarlo sin modificarlo, y un vector de enteros, para modificarlo. ¿Cual es el prototipo correcto? a) void funcion(float, int *); b) void funcion(double, int *); c) a) y b) son correctas.
10.- El algoritmo Algoritmo p(n) Inicio Si n< X<- 1 Y<- 2 Devolver (x*y) Sino X<- 1 Y<- 2 Devolver p(n-1) Finsi Fin Tiene como tiempo de ejecución a) 2(n+1) b) 2n^2 c) n + 2
Se desean recoger los datos de ventas de móviles de una tienda comercial. Por cada teléfono vendido se desea guardar la marca del móvil, el modelo, el precio de venta, el precio de coste y el nombre del Operador de TELEFONIA en el que se da de alta. Defínase un tipo de datos denominado teléfono que conste de los campos: marca y modelo de tipo carácter con 15 de longitud, precioventa y preciocoste de tipo real y operador de tipo carácter con una longitud de 10.
a) Realizar un menú simple que tenga las siguientes opciones: “Introducir móvil”, “Visualizar móviles”, “Cargar fichero”, “Calcular beneficios” y “Salir”. El programa sólo deberá finalizar si señala la opción Salir, por lo que tras ejecutar cualquier opción deberá presentarse de nuevo el menú. (1 punto) b) Para la opción “Introducir móviles” codificar una función llamada lista que se encargue de permitir introducir los datos de un solo móvil. Esta función se implementará mediante la creación-inserción en una lista doblemente enlazada. Cada vez que el usuario quiera introducir datos de un móvil deberá acceder desde el menú a esta opción. Tras introducir los datos de un móvil la función deberá mostrar todos los datos de móviles introducidos hasta ese momento comenzando por el primero.(2 puntos) c) La opción “Visualizar móviles” deberá mostrar todos los datos de la lista comenzando por el último móvil introducido y finalizando por el primero. Esta función deberá, después de mostrar los datos, preguntar al usuario si desea generar un fichero o no, para guardar esos datos. En caso de respuesta afirmativa se deberá llamar a una función denominada “Crear_fichero” que genere un fichero de tipo binario que se llame “telefonos.bin” en el que se almacenen las informaciones de la lista. (2 puntos) d) La opción “Cargar fichero” deberá comprobar que existe un fichero denominado “telefonos.bin” y sólo podrá ser utilizada si previamente existe ese fichero. Si ese fichero no existe aún, deberá indicarlo mediante un mensaje. Si existe ese fichero, leerá los registros cargando sólo el dato de marca de cada uno de los teléfonos, en un vector dinámico en el que cada elemento sea de tipo cadena, y los de preciocoste y precioventa en una matriz de dos columnas y con tantas filas como teléfonos existan en el fichero. Debes mostrar el vector y la matriz por pantalla. Si deseas probar esta opción y las de los apartados anteriores no te funcionan puedes hacer uso del fichero denominado “ejemplo.bin” que te proporcionamos.(2, puntos) e) La opción “Calcular beneficios” deberá preguntar al usuario por una marca de teléfono y calcular el beneficio que esa marca de móviles ha proporcionado. Para ello deberás hacer uso del vector y la matriz generados en el apartado anterior, detectando por tanto que si el vector o la matriz no existen esta opción deberá indicarlo y no hacer nada. (2,5 puntos)
La famosa productora de cine MTP PICTURES S.A. está preparando una nueva película: "Pánico en las aulas X", que estrenará este próximo otoño. Ante el desastre de su última película "Pánico en las aulas IX", ha decidido contratar a los mejores actores y actrices del panorama mundial. Con este fin el becario de la productora ha recabado diferente información sobre los actores y la ha almacenado en un fichero binario llamado actores.bin ubicado en /home/in1lurom/PUBLICO. Los registros de este fichero tienen la siguiente estructura:
Con el fin de agilizar los trámites de elección de actores, la productora ha contratado a un programador ( tú ) para que realice un programa en C que contenga 3 archivos ( principal.c, fichero.c y lista.c ). Para los archivos fichero.c y lista.c se han de crear su correspondiente ficheros de cabecera (.h).
Para la realización del programa se deberá tener en cuenta lo siguiente: a) El programa invocará de manera secuencial (no hay que hacer menú) a las siguientes funciones: a. Se quiere saber cuántos actores componen el fichero. Implementa una función que determine el número de registros que el becario ha introducido en el fichero, sin leer todos los registros del mismo. ( 0.5 puntos ) b. Para que el proceso se agilice, se prefiere trabajar con los datos en memoria. Crea una función que lea todos los registros del fichero y los almacene en un vector dinámico cuyo tamaño se obtiene usando la función del apartado 1. ( 1 punto ) c. Función que muestre por pantalla todos los actores que participan en el casting, visualizando para ello todos los elementos del vector. ( 0.5 puntos ) d. La productora no quiere gastarse mucho dinero, así que ha decido contratar a los actores más baratos. Crear una función que ordene el vector de forma creciente de acuerdo al valor de cache de cada actor, utilizando para ello cualquier método de ordenación. ( 2 puntos ) e. Para el protagonista, el director busca un actor que no se humano. Crea una función que reciba el vector de estructuras del apartado 4 y almacene en una lista simplemente enlazada aquellos actores que cumplan esta condición (campo humano igual 0). ( 2 puntos ) f. Por último, para que toda la información se pueda visualizar correctamente, vuelca la lista en un fichero de texto "casting.txt". Este fichero almacenará en cada fila los datos de un actor, separándolos por un *. Si por cualquier razón la lista estuviera vacía, el fichero contendrá el mensaje "LISTA VACÍA" ( 2 puntos )
Formato del fichero de texto Pedro Picapiedra * 15000 * 1 * naranja Abeja Maya * 1000 * 0 * amarilla
b) El ejecutable del programa se llamará productora. Para ello, implementa un makefile de forma que se obtenga el ejecutable productora. El ejecutable se podrá obtener creando una librería con las funciones ( 1 punto ) o sin crearla ( 0. puntos ). c) Los nombres de los ficheros que utilizará el programa (actores.bin y casting.txt), se le pasarán como parámetros en la línea de ordenes. ( 1 punto ).
La función main se implementará en el archivo principal.c , las funciones de los apartados 1, 2, 3, 4 se implementarán en el archivo fichero.c y las funciones de los apartados 5 y 6 se implementarán en el archivo lista.c
Ejercicio para subir nota
NOTA:
CUESTIONES
PROBLEMAS
La empresa ganadera “Paco Nejoel Del Campo S.A.” que se dedica a la cría y venta de conejos, dispone de un fichero binario, denominado conejos2006.bin y que está ubicado en la cuenta, con los datos de los conejos criados en el año 2006. Los registros del fichero poseen la siguiente estructura:
Para la obtención del ejecutable se creará un Makefile (1.5 puntos), y el código fuente se implementará usando los siguientes archivos (1.5 puntos): un archivo principal.c, que contendrá a la función main , y los archivos ficheros.c, listas.c, y vectores.c, que contendrán las funciones correspondientes a ficheros, listas y vectores respectivamente. En caso de que una función afecte a más de un tipo (por ejemplo ficheros y listas, o listas y vectores), se puede incluir en cualquiera de los dos. Cada uno de estos tres archivos llevará su correspondiente archivo de cabecera ( .h ). Los tipos de datos para la lista simple y el vector, se implementarán en un archivo de cabecera denominado tipos.h.
Nota:
TEORIA
PROBLEMAS Se dispone de un conjunto de mensajes almacenados en un fichero binario. Los registros del fichero poseen la siguiente estructura: Prioridad : de tipo entero. To : cadena de 50 caracteres From : cadena de 50 caracteres Subject : cadena de 100 caracteres Msj : cadena de 255 caracteres. Estos mensajes ha sido analizados y procesados previamente para detectar la presencia de mensajes no deseados y de virus. Implementad un programa en C, que realice secuencialmente ( NO HAY QUE HACER MENÚ ) las siguientes operaciones:
Realiza el siguiente ejercicio siguiendo las indicaciones concretas de cada apartado. Ejercicio.- Debes entrar en la cuenta que figura en tu examen (login y password). No puedes salir de esta cuenta durante el examen y solo puedes utilizar un editor, el compilador y el depurador. Lee con mucha atención antes de comenzar a trabajar. TIEMPO: TRES HORAS. Recuerda que debes estructurar desde el principio el programa para tener un archivo principal ( llámalo examen.c ) en el que se encuentre sólo el main(), otro auxiliar , llámalo auxiliar.c , para las funciones, y los correspondientes archivos de cabecera ( examen.h y auxiliar.h ). El nombre del ejecutable deberá ser examen.exe. Si no lo haces así restarás un punto de tu nota final. Recuerda que no debes utilizar variables globales en ningún caso. No tienes por qué hacer un menú en el programa principal. Puedes simplemente llamar a las funciones secuencialmente. Si al final tienes tiempo y haces un menú podrás sumar 1 punto más. El menú sólo te puntuará si tienes al menos dos apartados que funcionan correctamente. Al final del examen tienes un ejemplo para que vayas probando tu programa apartado a apartado. Puedes solicitar al profesor que te corrija el examen cuando lo desees, pero no podrás abandonar el aula hasta que finalice el tiempo. Define el tipo de dato denominado registro que conste de una cadena (llamada nombre ) de longitud 15, un entero (llamado edad ) y un real (float) (llamado peso ). a) En el programa principal define un vector de 5 elementos de tipo registro y llama a una función, de nombre Introducir , de tipo void para introducir los datos de los 5 elementos. Llama también a una función, de nombre Imprimir , de tipo void para imprimir los datos del vector. (1 punto) b) Codifica una función, llámala Calcular , que reciba el vector, un entero por valor y un real por valor. Esta función deberá determinar qué elementos del vector tienen peso menor que el número real recibido y edad mayor que el entero recibido. Cada vez que se encuentre un elemento de este tipo deberá imprimirlo por pantalla. (2 puntos) c) Codifica una función, llámala Datosmatriz , que reciba el vector, una matriz m de tipo float de dimensión 2 x 5 y otra m2 de tipo float de dimensión 5 x 2 y no devuelva nada. Utilizando esquemas iterativos en la primera matriz deberás colocar en la primera fila las edades y en la segunda los pesos de todos los elementos del vector. En la segunda matriz deberás colocar en la primera columna los pesos y en la segunda las edades de todos los elementos del vector. En el programa principal deberás mostrar todos los elementos de cada una de estas 2 matrices. (2 puntos) d) Codifica una función, llámala Buscacadenas , que reciba un entero y el vector y que encuentre todas las cadenas (son campos de cada elemento del vector) de los elementos del vector que tengan longitud igual al entero recibido seleccionando entre ellas la menor (orden alfabético). La función deberá devolver el elemento del vector correspondiente a la cadena encontrada, con los requisitos anteriores. El programa principal deberá imprimir este resultado.(3 puntos) e) Codifica una función, llámala Producto , que reciba las dimensiones de cada una de las matrices (4 valores enteros) y las dos matrices, pasando un puntero simple que contenga la dirección del primer elemento de cada matriz, y calcule el producto, si es posible, mostrando por pantalla el resultado. Llama a esta función desde el programa principal de forma que reciba las dos matrices del
Ejercicio.- Debes entrar en la cuenta que figura en tu examen (login y password). No puedes salir de esta cuenta durante el examen y solo puedes utilizar un editor, el compilador y el depurador. Lee con mucha atención antes de comenzar a trabajar.
TIEMPO: TRES HORAS. Recuerda que debes estructurar desde el principio el programa para tener un archivo principal ( llámalo examen.c ) en el que se encuentre sólo el main(), otro auxiliar , llámalo auxiliar.c , para las funciones, y los correspondientes archivos de cabecera ( examen.h y auxiliar.h ). El nombre del ejecutable deberá ser examen.exe. Si no lo haces así restarás un punto de tu nota final. Recuerda que no debes utilizar variables globales en ningún caso. No tienes por qué hacer un menú en el programa principal. Puedes simplemente llamar a las funciones secuencialmente. Si al final tienes tiempo y haces un menú podrás sumar 1 punto más. El menú sólo te puntuará si tienes al menos dos apartados que funcionan correctamente.
Al final del examen tienes un ejemplo para que vayas probando tu programa apartado a apartado.
Puedes solicitar al profesor que te corrija el examen cuando lo desees, pero no podrás abandonar el aula hasta que finalice el tiempo.
Define el tipo de dato denominado registro que conste de una cadena (llamada nombre ) de longitud 15, un entero (llamado edad ) y un real (float) (llamado peso ).
f) En el programa principal define un vector de 5 elementos de tipo registro y llama a una función, de nombre Introducir , de tipo void para introducir los datos de los 5 elementos. Llama también a una función, de nombre Imprimir , de tipo void para imprimir los datos del vector. (1 punto) g) Codifica una función, llámala Calcular , que reciba el vector, un entero por valor y un real por valor. Esta función deberá determinar qué elementos del vector tienen peso menor que el número real recibido y edad mayor que el entero recibido. Cada vez que se encuentre un elemento de este tipo deberá imprimirlo por pantalla. (2 puntos) h) Codifica una función, llámala Datosmatriz , que reciba el vector, una matriz m de tipo float de dimensión 2 x 5 y otra m2 de tipo float de dimensión 5 x 2 y no devuelva nada. Utilizando esquemas iterativos en la primera matriz deberás colocar en la primera fila las edades y en la segunda los pesos de todos los elementos del vector. En la segunda matriz deberás colocar en la primera columna los pesos y en la segunda las edades de todos los elementos del vector. En el programa principal deberás mostrar todos los elementos de cada una de estas 2 matrices. (2 puntos) i) Codifica una función, llámala Buscacadenas , que reciba un entero y el vector y que encuentre todas las cadenas (son campos de cada elemento del vector) de los elementos del vector que tengan longitud igual al entero recibido seleccionando entre ellas la menor (orden alfabético). La función deberá devolver el elemento del vector correspondiente a la cadena encontrada, con los requisitos anteriores. El programa principal deberá imprimir este resultado.(3 puntos)
j) Codifica una función, llámala Producto , que reciba las dimensiones de cada una de las matrices (4 valores enteros) y las dos matrices, pasando un puntero simple que contenga la dirección del primer elemento de cada matriz, y calcule el producto, si es posible, mostrando por pantalla el resultado. Llama a esta función desde el programa principal de forma que reciba las dos matrices del apartado c). Recuerda que para multiplicar dos matrices, el elemento de la matriz producto que ocupa la fila i y la columna j se obtiene multiplicando los valores de la fila i de la primera matriz por los valores de la columna j de la segunda y sumando esos productos(2 puntos).
Caso de prueba.- Introduce como elementos del vector los siguientes: Nombre: Rafael Edad: 18 Peso: 65. Nombre: Manuel Edad: 22 Peso: 75. Nombre: Juan Luis Edad: 40 Peso: 80. Nombre: Casimiro Edad: 34 Peso: 74. Nombre: Jose Edad: 56 Peso: 68. En el apartado b) puedes probar pasando como parámetros:
40 74.2 34
56
El apartado d) puedes probarlo con:
Parámetro entero: 6. Debe encontrar Rafael y Manuel. Como Manuel es menor que Rafael debe devolver el elemento segundo del vector y el programa principal mostrara: Nombre: Manuel Edad: 22 Peso: 75.
El apartado e) debe mostrar la siguiente matriz por pantalla: 12429.00 6700. 26703.93 12429. Si quieres probar con otros datos este apartado, observa que sean los que sean los que introduzcas en las matrices del apartado c) el resultado tiene que dar los mismos valores para los elementos de la diagonal principal.