1º IEM/ITL Fundamentos de Informática Curso 2010-2011 Hoja de Problemas 2 – Sentencias de Control Problema 1 Un análisis del control de calidad de un proceso de fabricación de productos ha determinado como defectuosos las piezas con códigos en el siguiente rango: 80-120, 150-355, 410-625, y 800-950. Realizar el código de un programa que indique si un artículo con un número de serie determinado es defectuoso o correcto. Problema 2 Escribir un programa que visualice el número más grande de n números introducidos por el teclado. Problema 3 Para una clase de n alumnos, escribir un programa que pida n y la nota que ha tenido en Programación cada alumno e informe de: a) Cuantos alumnos han aprobado y cual es la nota media de los aprobados. b) Cuantos alumnos han suspendido y cual es la nota media de los suspensos. c) Cual es la nota máxima de la clase y cuantos alumnos la han obtenido. d) Cual es la nota mínima de la clase y cuantos alumnos la han obtenido. Problema 4 (Nov-07) Suponiendo que un programa ha leído un número entero con scanf en la variable num, escribir el bucle que permite determinar si dicho número es primo o no. Al finalizar el bucle la variable entera es_primo debe valer 1 si el número num es primo y debe valer 0 si no lo es. Aclaración: Una manera de comprobar si un número num es primo, es calcular el resto de la división de dicho número entre todos los número positivos y mayores que uno que sean menores que num. Si alguno de los módulos (resto de la división) es cero entonces el número no es primo. Problema 5 Se desea realizar un programa C que solicite al usuario un determinado número entero mayor que 0 y le muestre los números primos menores que él. Problema 6 Escribir un programa que produzca una tabla de conversión de grados centígrados a Fahrenheit de n filas. La tabla empezará con C0 grados centígrados e irá realizando incrementos de DC grados. El programa deberá solicitar al usuario la temperatura inicial C0, el incremento de la tabla DC y el número de valores que se desean mostrar en dicha tabla (el número n de filas). Programa 7 Se quiere escribir un programa para obtener las raíces de una ecuación de segundo grado. El programa debe preguntar los valores a, b y c de la ecuación ax2 + bx + c = 0 y proporcionar el valor de sus raíces, contemplando las posibilidades de raíz doble o raíces complejas. Dibujar a mano el diagrama de flujo del programa antes de empezar a programar Codificar el programa y probarlo con varios ejemplos Programa 8 Escribir un programa que pida una letra y la convierta de minúscula a mayúscula o de mayúscula a minúscula. Si el carácter introducido no es una letra, entonces no hay que convertirlo. 1º IEM/ITL Fundamentos de Informática Curso 2010-2011 Programa 9 Escribir un programa que pida tres valores enteros y los muestre por pantalla en orden mayor a menor. Problema 10 (Nov-07) Suponiendo que un programa ha leído un valor entero mínimo min y un valor entero máximo max, escribir un bucle for que muestre por pantalla una tabla de valores y valores al cuadrado para todos los números comprendidos entre min y max. Ejemplo: si min vale 9 y max vale 12 el resultado sería (tabla bien alineada): x x*x ---------------9 81 10 100 11 121 12 144 Problema 11 (Nov-07) Escribir un programa completo (cabecera, includes, ...) que realice las siguientes operaciones: Declarar dos variables reales x e y Pedir al usuario el valor de x mediante scanf Si x fuera positivo calcular y según la expresión matemática y 12 (3x 2 5x) negativo según la expresión Mostrar los valores finales de x e y y 1 2 3x 2 5 x y si x fuese Nota: para calcular la raíz cuadrada se utiliza la función sqrt(), lo cual requiere añadir al principio del programa el include: #include <math.h> Problema 12 (Nov-08) Escribir un programa completo (cabecera, includes, ...) que realice las siguientes operaciones: Declarar una variable x (tipo double) y otra n (tipo int). Leer el valor de ambas variables mediante scanf Calcular xn a base de multiplicar x tantas veces como indique n. Mostrar el resultado utilizando un formato que sólo muestre 2 cifras en la parte decimal. Problema 13 (Nov-08) Escribir un programa que pida una nota de un alumno (número real) y escriba las calificaciones correspondientes de acuerdo con el siguiente criterio: 0 a < 5.0 Suspenso 5 a <7.0 Aprobado 7.0 a <9.0 Notable 9.0 a <=10 Sobresaliente Si la nota es negativa o mayor que 10 se debe mostrar un mensaje de error. 1º IEM/ITL Fundamentos de Informática Curso 2010-2011 Problema 14 (Nov-08) Suponiendo que un programa ha inicializado, mediante #define el parámetro SECRETO con un valor entero, escribir un bucle que permita al usuario jugar a adivinar el valor de SECRETO. El bucle debe hacer: Preguntar un número al usuario Comparar dicho número con el valor de SECRETO o Si ha acertado, mostrar un mensaje de enhorabuena o Si no ha acertado, indicar si el valor SECRETO es menor o mayor que el introducido El bucle se repite hasta que el usuario acierte el valor Nota: No hace falta validar la entrada, el usuario puede introducir cualquier valor entero y el programa se limita a darle pistas. /* Nombre: Fecha: 20/nov/2008 Descripción: Programa para adivinar un número entero. */ #include <stdio.h> #define SECRETO 1234 int main(void) { int num; //número que prueba el usuario /*** Bienvenida ***/ printf("Hola, a ver si adivinas el número secreto\n\n"); /*** Bucle para adivinar el número ***/ 1º IEM/ITL Fundamentos de Informática Curso 2010-2011 Problema 15 (Nov-08) Suponiendo que un programa ha leído una fecha mediante la variable entera dia y la variable entera mes, indicar si es primavera, verano, otoño o invierno. Datos: Las fechas de cambio de estación son: 20/mar Primavera 21/jun Verano 22/sep Otoño 21/dic Invierno (Fechas de 2009, http://en.wikipedia.org/wiki/Equinox) /* Nombre: Fecha: 20/nov/2008 Descripción: Programa para identificar la estación del año. */ #include <stdio.h> int main(void) { int dia; //día del mes int mes; /*** Lectura de la fecha ***/ printf("Intruduzca el día: "); scanf("%d",&dia); printf("Intruduzca el mes: "); scanf("%d",&mes); /*** Mostrar la estación del año ***/ /*** (considerando que la fecha es válida) ***/