




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: Fundamentos Programacion, Profesor: Raquel Hervas, Carrera: Ingeniería de Computadores, Universidad: UCM
Tipo: Ejercicios
1 / 8
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





Facultad de Informática – Universidad Complutense
Curso 2012–
1. Utilizando las estructuras de datos definidas en el ejercicio 7 de la hoja de ejercicios del Tema 5 (empleados de una empresa), implementa los siguientes subprogramas: a) Añadir un nuevo empleado a la plantilla en la posición i de la lista (con 0 ≤ i < N). b) Eliminar el empleado en la posición i de la lista (con 0 ≤ i < N). 2. Un archivo de texto contiene información acerca de los productos que se venden en un almacén. Lo único que se sabe acerca del número de productos es que no puede superar un cierto valor MaxProductos. De cada producto se guarda información sobre su código identificador (entero positivo), su precio (real) y el número de unidades existentes (entero positivo). El formato en el que se guarda la información dentro del archivo es el siguiente: id1 precio1 unidades id2 precio2 unidades ... idN precioN unidadesN ‐ 1 a) Declara un tipo tProducto que represente la información de un producto y un tipo tLista que mantenga la información de todos los productos. b) Escribe un subprograma que lea los datos del archivo de texto que almacena la información, los guarde en la lista y luego los muestre en la pantalla. c) Escribe un subprograma que encuentre el producto con máximo valor en el almacén, considerando que el valor del producto i es precio (^) i *unidades (^) i. d) Escribe un subprograma que dado un identificador de producto a eliminar del almacén, lo busque en la lista y lo elimine actualizando la lista como corresponda.
3. Define un tipo tVector que permita representar secuencias de N enteros e implementa, además de subprogramas para leer y mostrar un vector: a) Un subprograma que, dado un vector, mueva sus componentes un lugar a la derecha. El último componente se moverá al 1 er^ lugar. b) Un subprograma que, dado un vector, calcule y devuelva la suma de los elementos que se encuentran en las posiciones pares del vector. c) Un subprograma que, dado un vector, encuentre y devuelva la componente de mayor valor. d) Un subprograma que, dados dos vectores, devuelva un valor que indique si son iguales. e) Un subprograma que obtenga si alguno de los valores almacenados en el vector es igual a la suma del resto de los valores del mismo. f) Un subprograma que obtenga si alguno de los valores almacenados en el vector está repetido. 4. Dado un vector de N caracteres v1, en el que no hay elementos repetidos, y otro vector de M caracteres v2, donde N ≤ M, se quiere comprobar si todos los elementos del vector v1 están también en el vector v2. Por ejemplo, si: v1= ‘a’ ‘h’ ‘i’ ‘m’ v2= ‘h’ ‘a’ ‘x’ ‘x’ ‘m’ ‘i’ El resultado sería cierto, ya que todos los elementos de v1 están en v2. 5. Implementa un programa que permita realizar operaciones sobre matrices de NN. El programa debe permitir al usuario la selección de alguna de las siguientes operaciones: a) Sumar 2 matrices. b) Restar 2 matrices. c) Multiplicar 2 matrices. d) Trasponer una matriz. e) Mostrar una matriz señalando cuáles son los puntos de silla (los puntos de silla de una matriz son aquellos elementos de la misma que cumplen ser el mínimo de su fila y el máximo de su columna). Habrá también dos subprogramas para leer del teclado o mostrar en la pantalla una matriz.
10. Escribe un programa que lea del teclado una frase y a continuación visualice las palabras de la frase en columna, seguida cada una del número de letras que la componen. 11. Para que los cálculos resultasen más fáciles, los romanos solían utilizar una notación aditiva pura. Un número romano en esta notación es una cadena de dígitos romanos, comenzando por el dígito del valor más alto y terminando con el de valor más pequeño, y su valor se obtenía simplemente como la concatenación de sus dígitos (en esta notación, por ejemplo, el número arábigo 19 se representa como XVIIII, X ‐10‐ seguido de VIIII ‐9‐). (Nota: en lugar de usar las expresiones sustractivas, como IX, se usan siempre las aditivas, VIIII.) Escribe un subprograma romanoAEntero() que lea una cadena de caracteres introducida por el teclado y devuelva: a) Un valor que indique si la cadena leída se puede interpretar como un número romano válido en notación aditiva pura, y b) el número arábigo equivalente calculado en caso de ser válido el número romano. Así, por ejemplo, si se introduce por teclado MDCCCCLXXXVIIII el subprograma devolverá un valor que indique que el número romano es válido y el número arábigo 1989. En cambio, si se introduce por teclado aX, el subprograma devolverá un valor que indique que no es un número romano válido. NOTA: La cadena no se podrá interpretar como número romano si contiene algún carácter que no sea un dígito romano. Recuerda que los dígitos romanos y sus valores correspondientes son: I = 1; V = 5; X = 10; L = 50; C = 100; D = 500; M = 1000. 12. Como parte de un programa de gestión contable, se necesita una estructura de datos capaz de almacenar los gastos en distintos conceptos producidos cada mes por cada uno de los departamentos. Define tal estructura de datos teniendo en cuenta que los departamentos y los tipos de gastos contemplados son los siguientes: Departamentos: Marketing, Contabilidad, Recursos_Humanos, Distribución, Ingeniería, Investigación. Conceptos: Salarios, Suministros, Mobiliario, Equipamiento, Otros.
Define subprogramas que, partiendo de una matriz de gastos completa, realicen las siguientes tareas: a) Escribir en la pantalla la suma de gastos de cada uno de los departamentos. b) Escribir en la pantalla la suma de gastos por cada concepto. c) Calcular y devolver el total de gastos de un año. d) Construir y devolver un array con los gastos generados cada mes. e) Encontrar el valor más alto de la tabla de gastos y devolver el departamento responsable, el tipo de gasto y el mes en que se produjo.
13. Queremos programar el juego de las 3 en raya:
X O X X O O
a) Define una estructura de datos para representar el tablero de juego. b) Implementa un subprograma para inicializar el tablero con blancos. c) Implementa un subprograma para dibujar el tablero junto con el contenido de cada posición ('X', 'O', ' '). d) Implementa un subprograma que devuelva true o false, dependiendo de si todo el tablero está ocupado o existen casillas libres. e) Implementa la función Booleana TresEnRaya(tableroJuego, jugador) que devuelva true en caso de que un jugador tenga la jugada de tres en raya y false en caso contrario.
14. En un archivo de texto se encuentran grabados los resultados correspondientes a unas elecciones autonómicas. Cada línea de dicho archivo almacena los datos de una comunidad (máximo 15 comunidades). Éstos son: Número de la comunidad autónoma. Número de partidos políticos que han obtenido escaños en el parlamento regional correspondiente (máx. 10 partidos). Por cada uno de los partidos: Nombre (una palabra) Número de escaños obtenidos Como los nombres de los partidos no pueden tener espacios intermedios nos basta un espacio para separar los distintos campos:
determinadas de una forma aleatoria. El agua se ha de colocar en los bordes y los puentes en las esquinas indicadas. b) Escribe un subprograma direccionPirata() que nos dé la dirección en la que avanzará el pirata (Norte, Sur, Este u Oeste). Un número aleatorio entre 1 y 4 decidirá qué dirección toma el pirata. c) Escribe un procedimiento dibujarTablero() que dibuje el tablero con el formato de la figura. d) Escribe un programa que permita al pirata Pata de Palo intentar buscar el Gran Tesoro en menos de 50 movimientos. El pirata recorre los cuadros de uno en uno según la dirección. Al final ha de indicarse si el pirata ha encontrado el tesoro o si se ha ahogado (ha caído al agua).
18. En una panadería se elaboran diariamente los siguientes tipos de productos: colines (30), viena (45), barra (85), baguette (90), hogaza de ½ kg (100), hogaza de 1 kg (150) y hogaza de 3 kg (250). Los fines de semana se elaboran tortas de anises (130) y tortas de chicharrones (180). Los precios de cada producto son los indicados entre paréntesis. El panadero desea mantener actualizada la información de una semana de la cantidad diaria de productos elaborados, de productos vendidos en horario de mañana y de productos vendidos en horario de tarde. Considera que el horario de mañana es de 8 a 13 h. y el de tarde es de 16 a 19 h. Realiza las declaraciones de tipos apropiadas para representar la citada información y escribe un subprograma que muestre por pantalla el dinero obtenido por la venta de todos los productos el último día de la semana. 19. Define una estructura de datos para representar las temperaturas de todos los días del año, por días de semana y por semanas. Considera 52 semanas al año y 7 días por semana. Escribe un subprograma que devuelva la menor temperatura de todo un año, junto con el día de la semana y la semana del año. 20. Construye un programa que lea una cadena de caracteres del teclado y construya una nueva cadena con los plurales de las palabras. Suponemos que las cadenas solo contienen nombres y los nombres están separados por un espacio en blanco. Para formar el plural solamente se seguirán las siguientes reglas: Los nombres que terminan en vocal añaden s Los nombres que terminan en consonante añaden es
21. El juego de las 4 en línea consta de un tablero formado por siete columnas y seis filas. En una partida participan dos jugadores, uno con fichas blancas y otro rojas. Inicialmente todas las posiciones del tablero están libres. Cada jugador coloca alternativamente una ficha en una columna. La ficha colocada cae por su propio peso hasta el fondo de la columna correspondiente (primera fila de la columna libre); por ejemplo, en la figura si el jugador Rojo coloca una ficha en la columna 2, la ficha se coloca en la fila 3. La partida la gana el jugador que coloque en primer lugar cuatro de sus fichas en línea horizontal, vertical o en diagonal. La partida queda en tablas si ninguno de los jugadores es capaz de alinear cuatro fichas después de llenar el tablero.
6 L L L L L L L 5 L L L L L L L 4 L L L L L L 3 L L L L 2 L L 1 L 1 2 3 4 5 6 7
a) Codifica las estructuras de datos necesarias para jugar una partida. b) Escribe un subprograma inicializarJuego() que quite todas las fichas del tablero y prepare el tablero de juego. c) Escribe un subprograma colocarFicha() que dado un jugador (blanco o rojo) y una columna (1 a 7), coloque la ficha en la posición correspondiente. d) Escribe un subprograma presentarTablero() que visualice en la pantalla el estado del tablero (como en la figura, excepto la rejilla). e) Escribe un subprograma comprobarGanador() que, dado un jugador (blanco o rojo) y una determinada casilla (1 a 6, 1 a 7), determine si hay cuatro fichas del mismo jugador alineadas en horizontal.