You are on page 1of 12

Boletín de Ejercicios

Informática Aplicada (4º)

if (a>b) { aux=a. &a). a=b. break. No se pide traza. i. scanf ("%d%d". } responder a las siguientes cuestiones: a) ¿Cuál sería el resultado del programa si los datos introducidos fuesen 3 y 6?. aux. &a. d) Expresar con una fórmula qué cálculo hace este programa cuando a<=b. Demostrarlo con una traza. &b). } printf ("El resultado es: %d\n". b. i=i+1){ resultado = resultado * i. printf ("Introduce dos numeros enteros "). resultado). i<=b. c) ¿El resultado del programa depende del orden en que se introducen los datos? Explicar por qué. . break. b) ¿Y si los datos introducidos fueran 7 y 7?. } Ejercicio 2 Dado el siguiente programa en C: #include <stdio. } resultado = 1. break. case 4: case 7: case 10: case 13: printf ("C"). case 3: case 6: case 9: case 12: printf ("B").h> main(){ int a. for (i=a+1. b=aux.Boletín de ejercicios (2) ESTRUCTURAS DE CONTROL Ejercicio 1 Escribir un programa en C equivalente al siguiente fragmento de programa: scanf ("%d". resultado. switch (a) { case 2: case 5: case 8: case 11: printf ("A").

M=0. } Ejercicio 4 Dado el siguiente programa en C #include <stdio. i++.aux. Demuéstralo con una traza. A=N. &b).Boletín de ejercicios (3) Ejercicio 3 Realizar la traza del siguiente programa: #include <stdio. resultado). M=M+(B%10)*D. M). scanf (“%d%d”. k++) D=D*10. scanf ("%d". } printf (“El resultado es : %d \n”. j. for (k=0. for (i=a+1. printf ("Introduce un numero entero: "). j>=0. printf (“Introduzca dos numeros enteros: “). } responde a las siguientes cuestiones: a) ¿Cuál sería el resultado del programa si los datos introducidos fuesen 3 y 6?.h> void main(){ int a. b=aux. &a.b. b) ¿Y si los datos introducidos fuesen 7 y 7?. for (j=i. D. j--){ D=1. i=i+1){ resultado = resultado * i. B. while ((A/10) != 0) { A=A/10. k.resultado. } printf ("El resultado es %d\n". k<j. } B=N. i=0. a=b. N. B=B/10. } resultado = 1. if (a>b) { aux=a. i<=b.i. c) ¿El resultado del programa depende del orden en que son introducidos los datos? d) Expresa con una fórmula qué cálculo hace este programa cuando a<=b .h> main(){ int A. &N).

} Dado el anterior programa en C. ¿el resultado del programa puede ser diferente si cambia el orden en que introducidos los restantes datos? Ejercicio 6 #include <stdio. misterioA. misterioB = numeroY. scanf (“%d%d”. printf (“Introduzca dos numeros: “). while (dato>0) { if (dato < 100) dato = dato + 200.7. teniendo en cuenta lo siguiente: a) toda llamada que sea menor o igual a 5 pasos tiene un coste de 10 pesetas.h> void main(){ int numeroX. scanf (“%f”. misterioA = numeroX. 25. misterioC. } printf (“El resultado es: %d \n”.4. 444. misterioB=misterioC. 555. 250 y 0 en este orden? c) Suponiendo que el último dato introducido es siempre 0. b) cada paso adicional a partir de los 5 primeros cuesta 5 pesetas . misterioA=misterioB. while (misterioA != misterioB) { if (misterioA < misterioB) { misterioC=misterioA. 777. &numeroX. &numeroY). misterioB. resultado. ¿el resultado sería el mismo? Ejercicio 7 Hacer un programa en C que permita determinar la cantidad total a pagar por una llamada telefónica de N pasos (introducido por el usuario). else if (dato < 200) dato = dato + 100. if (dato > resultado) resultado = dato. numeroY. resultado = 200. } Dado el siguiente programa en C responde a las siguientes preguntas: a) ¿Cuál sería el resultado del programa si todos los datos introducidos son 15 y 21? Demuéstralo con una traza b) ¿Y si los datos introducidos fuesen 12 y 7? c) Si el programa escribiese al final misterioB en vez de misterioA. printf (“Introduzca dato: “). printf (“Introduzca dato: “). &dato).Boletín de ejercicios (4) Ejercicio 5 #include <stdio. misterioA).3. resultado).h> void main() { float radio. } printf (“El resultado es: %f\n”. responde a las siguientes preguntas: a) ¿Cuál sería el resultado del programa si los datos introducidos fuesen 333. 175.5 y 0 en este orden? Demuéstralo con una traza b) ¿Y si los datos introducidos fuesen 30. } else misterioA=misterioA-misterioB.

Boletín de ejercicios (5) Ejercicio 8 El número de individuos de una población animal afectada por una epidemia se reduce a la quinta parte cada año. .la superficie media de todas las planchas de los lotes buenos Nótese que no se pide la superficie media de todas las planchas buenas. a cabo de 2 años. Se dispone de los datos sobre el ancho y el largo de 500 planchas correspondientes a 50 lotes. hasta que el último sumando sea inferior a un error máximo deseado.6 en la medición de un determinado índice. Escribe un programa en C que lea el ancho y el largo de las planchas y escriba: . Ejercicio 11 Los pacientes con síntomas de una cierta enfermedad son ingresados en el hospital si tienen un valor superior a 0.. y se considera buena si es superior. Escribe un programa en C que lea desde teclado el número de pacientes seguido de la edad y el índice de cada paciente. y bueno si todas sus planchas son buenas. .. suponemos que no existen más personas y que por tanto el programa finaliza. El programa debe diseñarse para que cuando se detecte que una plancha de un lote es defectuosa. Ejercicio 10 a) Escribe un programa en C que realice el cálculo de la siguiente expresión para valores de x y N dados: x2 x3 xN ex =1+ x + + + .. Cuando la cantidad de dinero ya no es suficiente para dársela a una persona. Escribe un programa en C que lea el número de individuos inicial y un número de años N y escriba el número de individuos que quedarán en cada uno de los siguientes N años (al cabo de 1 año. Un lote se considera defectuoso si tiene una o más planchas defectuosas.. El problema consiste en diseñar un algoritmo que devuelva el número de personas que podrán recibir una cantidad de dinero. energía. el gasto total anual y el porcentaje de gasto de cada concepto sobre el total anual.4 metros cuadrados. y calcule la edad media de los pacientes analizados así como de los ingresados y de los operados. y son operados si el valor es superior a 0. no se incluyan los datos de las planchas de este lote para calcular la superficie media. No se admite una solución que emplee vectores. A cada persona le da una cantidad de dinero proporcional a la edad de la misma. Escribe un programa en C que lea dichos datos y muestre por pantalla el gasto total en cada trimestre. + 2! 3! N! b) Modifica el programa anterior para que calcule la expresion anterior para un valor de x dado. al cabo de N años) Ejercicio 9 En una industria se fabrican planchas rectangulares que se venden en lotes de 10 planchas. Por ejemplo.el número de lotes buenos . si una persona tiene 17 años recibirá 17000 ptas y si tiene 32 años recibirá 32000. Una plancha se considera defectuosa si su superficie es inferior a 4.9. vestuario y transportes de una familia durante cada uno de los 12 meses del año. alimentación. Ejercicio 13 Se conocen los gastos en vivienda.. Ejercicio 12 Una persona dispone de una cantidad de X pesetas que quiere repartir a un conjunto de personas.

Por ejemplo: N = 10 X = 3 Inicio : nºpersonas = 10 Parada 1 : bajan = 5 suben = 13 nºpersonas = 18 Parada 2 : bajan = 9 suben = 16 nºpersonas = 25 Parada 3 : bajan = 12 suben = 19 nºpersonas = 32 Final del trayecto : 32 personas Ejercicio 16 Dada la fecha de hoy.000 y menos de 8. Ejercicio 15 Un autobús hace un recorrido por una ciudad desde un punto inicial donde suben N personas hasta un punto final donde descienden todas. El autobús realiza X paradas intermedias. y debe mostrar por pantalla el valor de Y (que es el capital equivalente a interés compuesto) para N=1.Boletín de ejercicios (6) Ejercicio 14 Escribe un programa que calcule la composición de un capital a interés compuesto.Si hay más de 8. la población entra en crisis y empieza a decrecer a una tasa de 1/32 diario . El programa debe permitir al usuario repetir los cálculos con otros datos si lo desea. terminando cuando se introduzca un valor 0 para X. Ejercicio 17 Una población de bacterias crece diariamente de acuerdo al siguiente patrón: . .Si existen menos de 700 bacterias.000 bacterias. teniendo en cuenta los esquemas de crecimiento especificados.2. la población disminuye su tasa de crecimiento a un tercio del existente cada día . un límite de crecimiento deseado y diga cuántos días se necesitan para alcanzar esa población... (Suponga que el año no es bisiesto).000.15 años. Se sabe que en las paradas intermedias suben siempre 3 personas más que en la parada anterior y que desciende el 50% de la gente del autobús (sin contar los que suben en dicha parada).. la población se estabiliza y crece a una tasa de 1/78 diario Hacer un programa que lea la población inicial de bacterias. la población se triplica . Ejercicio 18 Construir un programa que calcule y presente por pantalla el signo del zodiaco a partir de la introducción por teclado del día y mes de nacimiento como números enteros..000. ¿Cuántas personas llegarán hasta el final del trayecto? Pedir al usuario los valores de N y X. calcular la fecha del día siguiente.Si existen entre 700 y 6. según la fórmula: Y = X ∗ (1 +1 / 100 ) N El programa debe solicitar al usuario el capital prestado X y el tipo de interés I (un número real entre 5 y 12).Si hay más de 6.

el valor 3 no aparece en el vector leído y por tanto la componente en la posición 3 del vector obtenido vale 0.) Ejercicio 2 Una agencia de viajes lanza una oferta de 10 viajes para el verano del 99.5)) y las casillas de fila impar y columna par tienen un número negativo (por ejemplo.. Realiza un programa en C que lea la edad y el número de viaje elegido por cada persona y diga qué viajes se ponen en marcha. el valor 2 aparece tres veces en el vector leído y por tanto la componente en la posición 2 del vector obtenido vale 3. (4. VECTORES Ejercicio 1 Escribe un programa que..1). dado un vector de N elementos (que se introducen por teclado).vector obtenido : 2 3 0 1 1 (el valor 1 aparece dos veces en el vector leído y por tanto la componente en la posición 1 del vector obtenido vale 2. (3. y el tiempo de cocción. La agencia desea poner en marcha sólo aquellos viajes en los que el número de personas menores de 10 años no supere el 10% de la gente apuntada a dicho viaje. las casillas (2. Escribe un programa en C que permita a los alumnos reservar el número de terminal deseado. se le permitirá al alumno solicitar otro si lo desea. Por ejemplo: . dada la hora en un reloj digital de 24 horas. . Las casillas que se encuentran en fila par y columna impar tienen un número positivo (por ejemplo. b) Modificar el programa anterior para que cuando un alumno solicita un terminal se le pida su número de matricula y se le deniegue la solicitud si ya tiene otra reserva realizada. MATRICES Ejercicio 1 Tenemos un tablero de ajedrez de 64 casillas (8*8). calcule a qué hora estará lista la comida. almacene en un vector auxiliar cuántas veces aparecen cada uno de los elementos.2).Boletín de ejercicios (7) DATOS Capricornio del 22 de diciembre al 20 de enero Acuario del 21 de enero al 19 de febrero Piscis del 20 de febrero al 20 de marzo Aries del 21 de marzo al 19 de abril Tauro del 20 de abril al 20 de mayo Géminis del 21 de mayo al 21 de junio Cáncer del 22 de junio al 21 de julio Leo del 22 de julio al 21 de agosto Virgo del 22 de agosto al 22 de setiembre Libra del 23 de setiembre al 22 de octubre Escorpión del 23 de octubre al 21 de noviembre Sagitario del 22 de noviembre al 21 de diciembre Ejercicio 19 Escribir un programa que. Si el terminal solicitado ya ha sido reservado por otro alumno.6)).vector leído : 2 5 1 4 2 1 2 . las casillas (1. Ejercicio 3 a) La Escuela de Topografía de Marte dispone de 100 ordenadores para uso de los alumnos. El problema consiste en .

estos desplazamientos se tratan como si la matriz estuviera envuelta sobre sí misma. Nota : Considerar que no hay elementos repetidos en la matriz. escribiéndolos en tal caso mediante sus coordenadas i. Ejercicio 2 Se llama “punto de silla” de una matriz M cuadrada a un elemento Mij que es mínimo en su fila y máximo en su columna. hay que averiguar cuál es el mayor de los números y luego dividir cada número por dicho valor máximo. Desarrollar un programa que calcule la resistencia total de la rama que seleccione el usuario.se comienza fijando un valor de 1 en el elemento central de la primera fila . Tener en cuenta que el rango de la matriz debe ser impar. etc) desplazándose desde la posición anterior una fila hacia arriba y una columna a la izquierda. Por ejemplo. es decir Mkj < Mij < Mik ∀k. Escribir un programa que pregunte al usuario qué cuadrado mágico desea generar (introducirá el rango de la matriz). . . generarlo y escribirlo en pantalla.j. Permitir al usuario que introduzca los valores correspondientes a cada resistencia. Ejercicio 4 Escribir un programa que normalice los 20 números almacenados en un vector. 1<k<n Escribe un programa en C que lea una matriz de enteros y determine si tiene puntos de silla. La resistencia total de una rama es: RT = R1 + R2 + R3. 3. en lugar de hacer el movimiento habitual. Ejercicio 3 Un cuadrado mágico es una matriz cuadrada con un número impar de filas y columnas.si una nueva posición ya está ocupada. nos desplazamos una fila hacia abajo en la misma columna. Ejercicio 5 a) El circuito siguiente es un circuito paralelo. Para ello. de forma que moverse una posición hacia arriba en la fila superior lleva a la fila inferior y moverse una posición hacia la izquierda desde la primera columna conduce a la última. R11 R21 R31 R41 R12 R22 R32 R42 R13 R23 R33 R43 . cuyas filas y columnas (e incluso sus diagonales) suman el mismo valor. de forma que los valores resultantes estén comprendidos en el intervalo del 0 al 1. la matriz siguiente es un cuadrado mágico de 3 por 3: 6 1 8 7 5 3 2 9 4 La técnica que se utiliza para generar los cuadrados mágicos es la siguiente: .luego se van escribiendo los sucesivos valores (2.Boletín de ejercicios (8) diseñar un algoritmo que pida los valores que contendrán las casillas y que diga si la suma de los números positivos es superior a la de los negativos o viceversa.

Los países NO están ordenados alfabéticamente y sus nombres pueden contener varias palabras (es decir. a continuación. pudiendo éstos estar repetidos. colnue). Ejercicio 3 Escribir un programa que lea un vector de caracteres y calcule: .Boletín de ejercicios (9) b) Modificar el programa anterior para que calcule la resistencia total de las ramas que seleccione el usuario. col) y la posición a la que se desea mover (filanue. La resistencia total se determina calculando la resistencia de las ramas implicadas y. Escribir un programa que. valide el movimiento devolviendo 1 si es correcto y 0 en caso contrario..cuántas palabras hay .cuántas letras tiene cada palabra . hacer una función en C que pasándole como argumento ambas cadenas. cuyos caracteres se encuentran en orden alfabético. almacene en otro vector la cadena resultante al ordenar alfabéticamente los caracteres de las dos cadenas S y T. escribe un programa en C que sustituya en el mismo vector los caracteres “ny” que encuentre por una “ñ”. aplicando la fórmula de la resistencia de un circuito paralelo: RT = 1/(1/Rt1 + 1/Rt2 + .la media de letras de todas las palabras Ejercicio 4 Se tiene una matriz de N*M caracteres que contiene los nombres de N países.. Ok Ok Ok Ok Caballo Ok Ok Ok Ok VECTORES DE CARACTERES Ejercicio 1 Dado un vector de N caracteres (letras y blancos). Se pide un programa en C que realice las siguientes funciones: . + 1/Rtn) Ejercicio 6 La siguiente figura muestra los movimientos válidos del caballo de ajedrez. espacios en blanco en el medio). Ejercicio 2 Dadas dos cadenas S y T.la palabra de longitud máxima . dadas la posición actual del caballo (fila.

Ejercicio 5 Se tiene una matriz de caracteres que tiene ya almacenados los nombres de 100 países (máximo 50 caracteres) que están ordenados por orden alfabético. a un nuevo estado dado (suponiendo el vector ordenado por DNI. Si el país no existe.número de medallas de oro .  la suma total de habitantes de todas las ciudades que pertenecen a una provincia determinada (identificada por su código) Ejercicio 2 Se pretende gestionar el padrón de habitantes de un pequeño pueblo de 300 habitantes.número de participantes .Boletín de ejercicios (10) . c) una función que. . Para cada uno de los 192 países se desea guardar: . . Se pide un programa en C que realice tantas veces como sea requerido por el usuario la siguiente operación: buscar un país en la matriz de caracteres (aplicar búsqueda binaria) y añadir al final del nombre del país el prefijo telefónico de dicho país (2 caracteres para el prefijo de teléfono) dejando un espacio en blanco entre el nombre y el código telefónico.OO. Escribir todos los países que comienzan con una determinada letra. Devolver el número de países que están repetidos. suponiendo que hay 100 ciudades. nos liste en pantalla el nombre de los habitantes que viven en la misma. dada una dirección. d) una función que cambie el estado civil de un habitante. del que conocemos su DNI. ESTRUCTURAS DE DATOS Ejercicio 1 Se dispone de un vector con información relativa a un conjunto de ciudades. Esta función debe devolver un entero que será el número de habitantes introducidos. De cada uno de ellos se tiene:  nombre y apellidos : cadena de 50 caracteres  dirección : cadena de 40 caracteres  edad : entero  DNI : cadena de 8 caracteres  estado civil : carácter (‘c’/’s’/’v’/’d’) Se pide: a) definir las estructuras de datos necesarias b) una función de lectura de habitantes (que lea hasta 300 lecturas o hasta que el usuario escriba un blanco cuando se pida el nombre). desplazando el resto de los países que estén situados después del país encontrado. Cada elemento del vector contiene los siguientes datos:  nombre de la ciudad : 40 caracteres  número de habitantes : entero largo  código de la provincia a la que pertenece la ciudad : entero Se pide definir las estructuras de datos necesarias y funciones que desempeñen estas tareas:  generar los datos del vector leyendo la información desde teclado. dar un mensaje de error. Un país sólo puede estar repetido una vez.nombre del país : 20 caracteres . Obtener el nombre del país de mayor longitud y situarlo en la última fila de la matriz. la búsqueda debe ser lo más eficiente posible) Ejercicio 3 Se quiere llevar el control de las medallas de los JJ.

Debe devolver el número de países leídos. dirección. miestras que dejaría las de oro con el número que tuviera. según la cantidad que se le indique. Luego a partir de un menú se llamará a una serie de funciones: visualizar toda la información. que indicarán la hora en la que vino y la hora en la que recogieron al niño. otra para actualizar los datos por jornada. otra que sirva para dejar al niño en la guardería (se deberá indicar nombre y apellidos del niño y hora) y otra función para saber. El programa debe tener una función para introducir los datos iniciales.Boletín de ejercicios (11) . dada una hora determinada. Como máximo debe leer 192 países o hasta que se le indique que no se desea leer más. por supuesto) Ejercicio 7 Una casa de subastas sólo admite 15 compradores por sesión.la columna jugada : 15 caracteres (por ejemplo. indicando los goles encajados y marcados por cada equipo (el programa deducirá si ha ganado (3 puntos). debería buscar a España y entonces incrementar el número de medallas de plata que tiene en una y las de bronce en tres.fecha del día al que corresponde Suponiendo que el número de jornadas de quiniela es 20: a) definir las estructuras de datos necesarias b) escribir una función para introducir los datos de una quiniela c) escribir una función que lea una fecha desde teclado. Ejercicio 6 Se desea realizar un programa para mantener la clasificación de la liga de fútbol. Por ejemplo. Se pide un programa que primero pedirá los datos de los compradores. busque la quiniela jugada en esta fecha e imprima los datos correspondientes Ejercicio 5 Se quiere guardar información sobre una guardería a la que acuden 20 niños y lo que se desea es mantener una ficha sobre cada uno de ellos con los siguientes datos: nombre y apellidos. número de medallas de plata . El programa principal deberá tener un menú que permita llamar a cada una de las funciones especificadas. número de medallas de bronce a) definir las estructuras de datos necesarias b) realizar una función para leer los datos. realización de una puja por un objeto (cada comprador introducirá cuánto ofrece) y finalmente. si a la función se le pasa (“España”. 3). Por cada uno de ellos. 0. El programa deberá tener una función para leer los datos de todos los niños. cuántos niños han llegado a la guardería antes de la hora indicada. cantidad total comprada y puja por el producto actual. goles a favor. Por cada comprador se guarda su nombre. una función que determine quién ha ofrecido más y adjudique el objeto a . El menú dispondrá de una opción para salir del programa. goles en contra y número de puntos. 1X121XX212X2121) . se desea almacenar: el nombre del equipo. Para cada quiniela la información a guardar será: . El número de participantes es 20. c) una función que calcule el país con más medallas en total y que imprima el nombre de dicho país d) una función que dado el nombre de un país incremente el número de medallas de cada clase que tiene. 1. Además se dispondrá de dos campos. sexo y edad. Ejercicio 4 Se quiere realizar un programa para almacenar en un vector las quinielas jugadas por un aficionado al fútbol. Una última función visualizará todos los datos almacenados.el número de aciertos . empatado (1 punto) o perdido (0 puntos)) y una última función que permita mostrar la clasificación (ordenada.

Todos sus aviones tienen una capacidad de 100 pasajeros y de cada uno se tiene la siguiente información: .Nombre: máximo se almacenan 30 caracteres. Ejercicio 8 En una aerolínea muy conocida desean tener una ayuda con sus vuelos.Cuántos fumadores hay .Fumador o no . .Precio que pagó por el pasaje .Total recaudado con los pasajes . El menú dispondrá de una opción para salir del programa.Boletín de ejercicios (12) ese comprador incrementando su cuenta de gastos.Información completa de todos los pasajeros .Peso total del equipaje .Peso del equipaje - La aerolínea desea que le entregue los siguientes informes: .