Fundamentos de Programacion Efercicios.

- 1/15

I.E.S. Be:miliana
Ejercicios de Iundamentos de programacion.

Bloque 1: 1ipos de datos básicos, concepto de variable, entrada y salida
de datos.

1. Programa que sume dos numeros enteros leidos por teclado.
2. Programa que sume dos numeros reales leidos por teclado.
3. Programa que lee dos numeros y devuelve su suma, su resta, su producto y su division.
4. Programa que halla el area de un circulo.
5. Programa que halle el area de un triangulo.
6. Programa que resuelve una ecuacion de primer grado.
7. Programa que calcule el precio real de un articulo despues de aplicarle el IVA. Se leera el precio y el
porcentaje de IVA.
8. Programa que lea en dos variables numeros enteros e intercambie sus valores.
9. Programa que halla el importe de una Iactura introduciendo: el precio, las unidades, el ° de iva y el
° de descuento.
10. Programa que halla la media de tres notas introducidas por teclado.
11. Programa que lea un numero entero y muestre su cuadrado. Probar con numeros superiores a 182.
12. Programa para obtener el tamaño de los distintos tipos de variables de C en Bytes. Para ello utiliza la
Iuncion sizeoI (), la cual devuelve el tamaño en bytes del parametro pasado.

Bloque 2: 1oma de decisión, if (con/sin anidamiento), switch.

13. ModiIicar el programa de la media de las notas para que imprima 'aprobado¨ o 'suspendo¨
dependiendo del valor de la media.
14. Programa que lea un numero entero e indique si es par o impar.
15. Programa que lea un numero entero e indique si es negativo, positivo o cero.
16. Programa que lea una cantidad numerica y pregunte si se desea pasar a euros (E) o a pesetas (P). Y
realice la conversion.
17. Se trata de escribir un programa que permita emitir la Iactura correspondiente a una compra de un
articulo determinado del que se adquieren una o varias unidades. El IVA a aplicar es del 12° y si el
precio bruto (precio de venta ¹ IVA) es mayor de 300 t se aplicara un descuento del 5°.
18. Programa que lee dos numeros, si el primero es mayor los resta, si es menor los suma y si son iguales
los multiplica.
19. Programa que lea un numero e indique si es multiplo de 4.
20. Programa que lea un numero e indique si es multiplo de 3 o de 4 , o de 3 y de 4 a la vez. Por ejemplo:
es 15 es solo multiplo de 3, pero no de 4. El 12 o el 24 son multiplos de 3 y tambien de 4 .
21. Programa que lea dos numeros y un operador aritmetico ( ¹ - * / ) y simule una calculadora.
Realizarlo con IF sin anidar, con IF anidados y con SWITCH.
22. Programa que lea una nota numerica con decimales y escriba la caliIicacion correspondiente (MD,
IN, SF, BI, NT, SB). Realizarlo con IF anidados y sin anidar.
23. Programa que calcula las raices de una ecuacion de segundo grado. Hacer las comprobaciones
oportunas para que no se divida por 0, y que no se calcule la raiz cuadrada de un numero negativo.
24. Programa que calcule la edad exacta de una persona introduciendo por teclado la Iecha de nacimiento
y la Iecha actual.
25. Una compañia aseguradora tiene en cuenta la siguiente tabla de precios:
- 100,00 t Jovenes sanos
- 120,00 t Jovenes enIermos Edad media sanos
- 140,00 t Edad media enIermos Edad avanzada sanos
- No se admiten Edad avanzada enIermos
Se considera:
- Gente joven a menores de 28 años
- Gente de edad media entre 28 y 50 años
- Gente de edad avanzada a mayores de 50 años.
Se leera desde teclado el estado de salud (S/E) y la edad, y el programa debera imprimir el importe
de la poliza.
Fundamentos de Programacion Efercicios. - 2/15

I.E.S. Be:miliana
26. Programa que calcule el importe del alquiler de un coche segun las siguientes condiciones:

- Si la categoria es: 'A¨ 20,00 t diarios.
'B¨ 30,00 t diarios.
'C¨ 40,00 t diarios.
- Si el conductor es menor de 21 años y tiene menos de un año de carnet tendra un incremento
de 5,00 t diarios.
- Si tiene menos de 21 años o menos de un año de carnet (solo una de las dos condiciones)
tendra un incremento de 2,00 t por dia.
- Se leera de teclado la categoria, los años de carnet, la edad, y el numero de dias de alquiler.

27. Programa que lea un numero correspondiente a un año y escriba si es o no bisiesto. Son bisiestos:
'Los multiplos de 4, excepto los multiplos de 100 que no lo sean de 400¨.
28. Escribir un programa que lea las edades de los empleados de una empresa mientras la edad leida sea
distinta de cero y calcule cuantos jovenes (menores de 22 años), maduros (entre 22 y 50 años) y
mayores (mas de 50 años) hay, mostrando el resultado en pantalla. En aquellos casos en los que la
edad no sea correcta (negativa o Iuera del intervalo de 18 a 65 años) se escribira un mensaje de error
en pantalla y se leera otra edad.

Bloque 3: 1ipo string (sin utilizar bucles).

29. Programa que lea un nombre y escriba un saludo. Por ejemplo: Si se lee Pepe Lope:, escribiria 'Hola
Pepe Lope:¨. Hacer el mismo ejercicio utilizando scanI() y gets()
30. Programa que lea una cadena y escriba su primera letra y la ultima.
31. Programa que lee una palabra e indica si empieza por vocal o consonante.
32. Programa que lea verbos en inIinitivo y diga de que conjugacion se trata.
33. Programa que lea palabras en singular y las escriba en plural:
a, e, i, o, u,: añadir s`
i, u y consonantes excepto la z: añadir es`
z: sustituir por c y añadir es`
34. Programa que lea una Irase e indique si empieza por mayuscula o por minuscula.
35. Programa que lea dos palabras y las escriba en orden alIabetico. Utilizando strcmp y stricmp.
36. Programa que lea una cadena y muestre su longitud. Utilizando la Iuncion strlen.
37. Programa que lea dos cadenas y las muestre unidas. Utilizando la Iuncion strcat.
38. Programa que lea dos cadenas e intercambie sus valores. Utilizando la Iuncion strcpy.

Bloque 4: Bucles (for, while, do¸while), contadores y acumuladores.

39. Programa que escriba en pantalla del 1 al 10. Utilizando Ior y while.
40. Programa que sume los 10 primeros numeros naturales. Utilizando Ior y while.
41. Programa que muestre los N primeros numeros naturales. Utilizando Ior y while.
42. Programa que muestre el abecedario en minusculas junto con su valor ASCII.
43. Programa que muestre todos los caracteres ASCII junto con su valor.
44. Programa que calcule la suma de los N primeros numeros naturales, introduciendo N por teclado.
Usando un bucle FOR, WHILE v DO-WHILE
45. Programa que calcule la suma de la serie: 1 ¹ 1/2 ¹ 1/3 ¹ ... ¹ 1/N.
46. Programa que pide un numero y muestre su tabla de multiplicar. Usando un bucle FOR, WHILE v
DO-WHILE.
47. Programa que muestre todas las tablas de multiplicar, haciendo una pausa entre tabla y tabla. Usando
bucles FOR, WHILE v DO-WHILE.
48. Programa que liste todos los numeros pares que haya entre dos numeros dados.
49. Programa que lea un numero inicial, un numero Iinal y un salto. A partir de estos numeros debera
mostrar la secuencia correspondiente. Sabiendo que el primer numero siempre sera menor que el
segundo y el salto sera positivo.
50. Programa que cuente hacia atras a partir de un numero introducido en la linea de ordenes y que
produzca un pitido una vez haya llegado a 0.

Fundamentos de Programacion Efercicios. - 3/15

I.E.S. Be:miliana
51. Programa que lea un numero inicial, un numero Iinal y un salto. A partir de estos numeros debera
mostrar la secuencia correspondiente. Se ejecutara si se dan las siguientes condiciones:
- Si el inicial es menor que el Iinal y el salto es positivo.
- Si inicial es mayor que Iinal y el salto es negativo.
- En cualquier otro caso no se podra ejecutar.
Se haran dos soluciones una utilizara un bucle FOR y otra WHILE.
52. Programa que muestre una palabra en todos colores posibles. Utilizando textcolor(nº). Consultar
ayuda para ver las constantes predeIinidas: BLUE, RED, etc. BLINK.
53. Programa que muestre una helice en la pantalla mediante la sucesion de los caracteres \-/.
Necesitaras la Iuncion delay() para producir un retardo y la Iuncion gotoxy(,) para posicionar los
caracteres en la pantalla.
54. Programa que haga sonar el altavoz del equipo en una Irecuencia ascendente. Utilizando sound(),
nosound() y delay().
55. Programa como el anterior, pero que al llegar a la maxima Irecuencia disminuya a la minima
Irecuencia.
56. Programa que haga sonar el altavoz del ordenador como una sirena apoyandonos en la Iuncion
matematica seno. Por ejemplo: sound(800*sin(i) ¹2) y un retardo de 20 milisegundos.
57. Programa que lea 20 numeros, calcule la suma total y cuente cuantos son positivos, cuantos son
negativos y cuantos son 0. Utilizando un bucle FOR y WHILE
58. Programa que lea numeros y cuente cuantos son pares y cuantos son impares. Se parara de leer
numeros cuando se introduzca un 0. Utilizando un bucle WHILE y FOR.
59. Programa que muestre todas las parejas de dos numeros donde el primero sea par y el segundo impar.
Desglosando cada numero en unidades y decenas.
60. Programa que muestre todas las parejas de dos numeros donde el primero sea par y el segundo impar.
Utilizando dos bucles Ior.
61. Mostrar todos los numeros de dos ciIras donde el primero sea mayor que el segundo. Desglosando
cada numero en unidades y decenas.
62. Mostrar todos los numeros de dos ciIras donde el primero sea mayor que el segundo. Utilizando dos
bucles Ior.
63. Mostrar todos los numeros de dos ciIras donde el primero sea multiplo del segundo.
64. Programa que calcule el Iactorial de un numero introducido por teclado. Utilizando un bucle FOR,
WHILE v DO-WHILE.
65. Programa que calcule x elevado a y. Utilizando un bucle FOR, WHILE v DO-WHILE.
66. Programa que calcule x elevado a y donde y puede ser negativo. Utilizando un bucle FOR.
67. Programa que lea dos numeros A y B y genere todas las parejas (a,b) que surjan de incrementar A en
2, y decrementar B en dos. Hasta que A supere el valor de 10 o B tome un valor menor de 10.
68. Programa que lee un caracter y llene toda la pantalla con dicho caracter, utilizando la Iuncion
gotoxy(,)
69. Programa que lee un caracter y llene toda la pantalla con dicho caracter. Si en la mitad de la
ejecucion se pulsa una tecla, se toma la tecla pulsada para pintar la pantalla. Se utilizaran las
Iunciones kbhit() y getch().
70. Programa que lea una tecla y recorra la pantalla en espiral con dicha tecla. Cuando llegue al Iinal
debera deshacerse la espiral en sentido contrario.
71. Programa que lee un numero entero positivo y muestra la lista y la suma de sus divisores. Utilizando
un bucle FOR y WHILE. Por ejemplo, si introducimos el numero 15, deberia mostrar lo siguiente:

Divisores de 15: 1, 3, 5, y 15
Suma de los divisores de 15: 24

72. Programa que averigua los numeros de tres ciIras donde la suma del cubo de sus digitos es igual al
propio numero. Utilizando 3 Ior anidados.
73. Programa que averigua los numeros de tres ciIras donde la suma del cubo de sus digitos es igual al
propio numero. Utilizando 1 Ior y descomponiendo el numero en sus digitos.
74. Programa que lea numeros enteros hasta que se introduzca un 0, y cuente el numero de positivos y
negativos introducidos.
75. Programa que lee temperaturas hasta introducir 99 y devuelve la media de las temperaturas
introducidas. Utilizando un bucle WHILE. (Inconvenientes de usar DO/WHILE).
76. Programa que lea las notas de los alumnos de una clase hasta introducir una nota superior a 10 y que
calcule la media de las notas introducidas. Utilizando un bucle WHILE.
Fundamentos de Programacion Efercicios. - 4/15

I.E.S. Be:miliana
77. Programa que lea el nombre y 6 notas de un alumno. Se aceptaran alumnos hasta que se introduzca
como nombre del alumno la palabra FIN. El programa calcula e imprime la media de cada alumno y
la media de la clase.
78. Diseñar un programa que calcule los salarios semanales de los trabajadores/as de una empresa a
partir de los siguientes datos:
Numero de horas trabajadas
Turno de trabajo realizado (M÷mañana,T÷tarde,N÷noche)
TariIa ordinaria por hora de cada uno de los trabajadores/as

Para el calculo del salario bruto se tendra en cuenta que el turno de tarde se paga a 1,2 mas de la
tariIa ordinaria, mientras que el turno de noche se paga a 1,5 mas tambien de la tariIa ordinaria.
Para el calculo del salario neto se realizan determinados descuentos destinados al pago de impuestos
de la siguiente Iorma:

Si el salario bruto es menor de 1100,00 t el descuento es del 0.8°
Si el salario bruto esta entre 1100,00 t y 1800,00 t el descuento sera del 10°
Si es mayor de 1800,00 t el descuento sera del 12°

Se desea escribir el salario neto de cada trabajador junto con el importe total de salarios abonados.
La lectura de los datos Iinaliza respondiendo S` o N` a la siguiente pregunta: '¿Mas
trabajadores/as(S/N)?¨

79. Programa que lea el nombre, sexo (H/M) y edad de una serie de personas de una poblacion,
Iinalizando la lectura de datos cuando un nombre sea igual a *` y muestre como resultado la media
de edad de cada sexo, asi como el nombre y la edad del hombre y la mujer de mayor edad
80. Programa que lea un numero y diga si es no primo. Un numero primo es aquel que solo es divisible
por el mismo y por la unidad.
81. Programa que muestre la lista de los N primeros numeros perIectos. Un numero es perIecto si la
suma de sus divisores, excluyendolo a el, coincide con su valor.
82. Programa que muestre la lista de los N primeros numeros primos. Un numero primo es aquel que
solo es divisible por el mismo y por la unidad.
83. Programa que muestre la lista de los N primeros numeros primos, eliminando en la comprobacion los
numeros pares y comprobando si son divisibles desde el 3 hasta la mitad de dicho numero.
84. Programa que calcule la lista de los N primeros numero primos, comprobando si son divisibles desde
el 3 hasta la raiz del numero.
85. Programa que realice el siguiente juego:
'Un jugador A introduce un numero a adivinar y un numero de oportunidades. Un jugador B debera
adivinar el numero que introdujo A en el numero de oportunidades establecido por A.
El jugador estara jugando mientras no acierte el numero y le queden oportunidades. Se podra parar
el juego cuando se pulse la tecla ESC.¨
86. Dos numero a y b se dice que son amigos si la suma de los divisores de a (salvo el mismo) coincide
con la suma de los divisores de b. Diseñar un algoritmo en C que tenga como entrada dos numeros
naturales inicial y final, y muestre en la pantalla todas las parejas de numeros amigos que existan en
el intervalo determinado por inicial y final.

Por ejemplo si introducimos 10 y 30 como inicial y Iinal, respectivamente. El resultado deberia ser el
siguiente:

11 y 13 son amigos
11 y 17 son amigos
11 y 19 son amigos
11 y 23 son amigos
11 y 29 son amigos
12 y 26 son amigos
13 y 17 son amigos
13 y 19 son amigos
13 y 23 son amigos
13 y 29 son amigos, .etc.

NOTA: Si a es amigo de b, es evidente que b es amigo de
a, por tanto, no haria Ialta comprobarlo. Observa el
ejemplo: como veras, el programa nos dice que 11 y 13
son amigos. Pero no dice que 11 es amigo de 13, y que 13
es amigo de 11.
Veamos, por ejemplo, por que 12 y 26 son amigos:
Los divisores de 12 son 1,2,3,4 y 6. Que suman 16
Los divisores de 26 son 1,2 y13. Que tambien suman 16
Fundamentos de Programacion Efercicios. - 5/15

I.E.S. Be:miliana
87. Programa que genere los N primeros numeros de la serie de Fibonacci. Cada numero de la serie se
obtiene por la suma de los dos numeros anteriores.
Por ejemplo para N÷10, deberia imprimirse: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55.

Bloque 5: Bucles (for, while, do¸while) utilizando string.

88. Programa que lee una Irase y la escribe del reves.
89. Programa que lea un string de 50 caracteres como maximo y cuente las vocales que hay en el.

Ej.: Entrada: cadena ejemplo
Salida: nº de vocales ÷ 6

90. Programa que lea un string de 50 caracteres maximo e indique el numero de veces que aparece cada
vocal. Utilizando switch.
Ej.: Entrada: 'cadena ejemplo¨
Salida: a ÷ 2, e ÷ 3, i ÷ 0, o ÷ 1, u ÷ 0

91. Igual que el anterior pero que cuente tambien los espacios en blanco y los caracteres que no sean
vocales.
92. Programa que calcule la longitud de una Irase sin utilizar strlen().
93. Programa que lea una Irase y una letra y diga cuantas veces esta la letra dentro de la Irase.
94. Programa que lea una Irase y una letra y muestre las posiciones en que se encuentra la letra en la
Irase.
95. Programa que lea una Irase y una vocal y sustituya todas las vocales de la Irase por la vocal leida.
96. Hacer un programa que lea un bloque de texto cualquiera y calcule el numero de digitos, letras y
espacios en blanco en el encontrados.
97. Programa que lea dos Irases y compruebe si son iguales. Sin utilizar strcmp().
98. Programa que lea una Irase y la copie en otra variable cadena al reves.
99. Programa que lee una Irase y determina si es o no un palindromo copiando la Irase en otra cadena al
reves y comparandolas.
100. Programa que lee una Irase y determina si es o no un palindromo comparando cada elemento con su
especular.
101. Programa que lea una Irase y un numero de rotaciones y rote la Irase a la derecha tantas veces como
se indique.
102. Programa que lea una Irase y cuente las veces que aparece la 'ch¨.
103. Pasar un numero de binario a decimal. Leer como cadena.
104. Programa que lea una palabra y copie en otra cadena su plural segun las siguientes reglas:
a, e, i, o, u,: añadir s`
i, u y consonantes excepto la z: añadir es`
z: sustituir por c y añadir es`

Bloque ô: Funciones, parámetros por valor y por dirección.

105. Programa que calcule el area de un triangulo. Se utilizara una Iuncion y el valor se devolvera
utilizando return().
106. Programa que calcule el area de un triangulo. Se utilizara una Iuncion y el valor se devolvera
utilizando un parametro.
107. Funcion que reciba por parametro un numero y devuelva por la izquierda 1 si es par y 0 si no es par.
108. Funcion que reciba por parametro un numero y devuelva por parametro 1 si es par y 0 si no es par.
109. Funcion que reciba por parametro un numero y devuelva por la izquierda 1 si es primo y 0 si no es
primo.
110. Funcion que reciba por parametro un numero y devuelva por parametro 1 si es primo y 0 si no es
primo.
111. Realiza un programa que utilice una Iuncion que reciba por parametro un caracter y lo pase a
mayuscula. Teniendo en cuenta la ñ y las vocales acentuadas.
112. Realiza un programa que utilice una Iuncion que reciba por parametro un caracter y devuelva por
return un 1 si el caracter es un digito y un 0 si no lo es.
Fundamentos de Programacion Efercicios. - 6/15

I.E.S. Be:miliana
113. Realiza un programa que utilice una Iuncion que reciba por parametro un nº entero y devuelva por
return su valor absoluto.
114. Realiza un programa que utilice una Iuncion que reciba por parametro una cadena de caracteres y
devuelva por return el nº de vocales que contiene.
115. Realiza un programa que utilice una Iuncion que reciba por parametro una variable de tipo cadena y
un caracter, y devuelva la cadena inicializada al caracter especiIicado.
116. Realiza un programa que utilice una Iuncion que reciba por parametro dos cadenas de caracteres de la
misma longitud e intercambie sus valores.
117. Programa que calcule el Iactorial de un numero dado. Se utilizara una Iuncion y el valor se devolvera
utilizando return().
118. Programa que calcule el Iactorial de un numero dado. Se utilizara una Iuncion y el valor se devolvera
utilizando un parametro.
119. Programa que utilice una Iuncion que calcule el maximo comun divisor de dos numeros pasados por
parametros. Utilizando el algoritmo de Euclides. Por ejemplo: para 20 y 8. Primero determinamos el
menor y lo tomamos como divisor del mayor. Iremos dividiendo mientras el resto sea distinto de 0.
En cada division, el divisor pasa a ser dividendo y el resto divisor. Al Iinal el divisor contendra el
m.c.d.
120. Realizar el ejercicio anterior probando todos los numeros menores que el menor hasta 1.
Evidentemente, es una solucion mucho menos optima.
121. Programa que lee una Irase y la escribe al reves. Se utilizara una Iuncion para calcular la longitud de
la Irase.
122. Programa que lee una Irase y la escribe al reves. Se utilizara una Iuncion que recibe la Irase como
parametro y la devuelve invertida.
123. Programa que lee una Irase y la escribe al reves. Se utilizara una Iuncion que recibe la Irase como
parametro y la devuelve invertida. En main() se utilizaran punteros a cadena y se reservara espacio
con malloc.
124. Programa que lee una Irase y la escribe al reves. Se utilizara una Iuncion que recibe la Irase como
parametro y la devuelve invertida. La Iuncion solo posee un parametro (la cadena a invertir) y el
valor a devolver sera un puntero a una cadena deIinida dentro de la Iuncion puntero a Iuncion -.
125. Programa que lee una Irase y un numero de rotaciones y llama a una Iuncion que recibe ambos datos
por parametro y devuelve la Irase rotada el numero de veces indicada.
126. Programa que lee una Irase y determina si es o no un palindromo. Se utilizara una Iuncion que de la
vuelta a la Irase y otra para comprobar que son iguales.
127. Programa que lee una Irase y determina si es o no un palindromo, comprobando cada elemento con
su simetrico. La Iuncion devolvera 1 o 0 dependiendo si es o no palindromo.
128. Funcion que pase a mayusculas una cadena de caracteres. Habra que tener en cuenta la ñ y las
vocales acentuadas. La cadena se devolvera por parametro. Se podra utilizar la Iuncion que pasaba un
caracter a mayusculas realizada anteriormente.
129. Programa el juego del ahorcado. Utilizando una Iuncion para dibujar el muñeco, que recibira por
parametro el numero de la oportunidad.

Bloque 7: Jectores y matrices.

130. Programa que lea 31 temperaturas sobre un vector de Ilotantes y utilice tres Iunciones para:
− Leer desde teclado las temperaturas.
− Determinar la media del mes.
− Determinar la temperatura maxima y minima, junto con los dias en que se produjeron

131. Programa que genere e imprima una matriz unitaria de orden 5 (matriz de 5 Iilas y 5 columnas con
todas sus componentes de valor 0 excepto las de la diagonal principal que valen 1).
132. Hacer un programa que cree un vector de 15 elementos de tipo entero, lo cargue con valores
aleatorios (entre 0 y 99), halle la suma de los primeros N elementos y muestre el resultado obtenido
asi como el contenido del vector. (Consulta en el ayuda las Iunciones random() y randomize).
133. Hacer un programa que cree un vector de 20 elementos de tipo entero, lo cargue con valores
aleatorios entre 1 y 100, y muestre en pantalla todos aquellos valores mayores de 30 junto con la
posicion que ocupan asi como el contenido del vector. En caso de que no exista ninguno mayor
debera indicarlo con un mensaje.

Fundamentos de Programacion Efercicios. - 7/15

I.E.S. Be:miliana
134. Diseñar un programa que cree una array bidimensional de longitud 5*15 (Iilas * columnas) cargue el
array con los dos unicos valores 0 y 1, donde el valor 1 ocupara las posiciones que delimitan el array,
es decir, las mas externas, mientras que el resto seran ocupadas por el valor 0.Realizarlo mediante
una Iuncion de carga y otra de visualizacion pantalla.
135. Programa que carga dos matrices de 3x3, calcula la matriz suma y la imprime. Se utilizara una
Iuncion que lea una matriz pasada por parametro, que sera llamada dos veces. Una Iuncion suma y
otra Iuncion que muestre una matriz pasada por parametro.
136. Programa que lee una matriz y genera otra matriz cuyos elementos son la potencia N (introducido por
teclado) de cada uno de los elementos de la matriz leida. Hacerlo mediante tres Iunciones: una de
carga , otra que eleve cada elemento y por ultimo una que muestre los resultados.
137. Programa que lee una matriz con la temperatura media mensual de cada provincia andaluza y calcule:
- la media anual de cada provincia.
- la media mensual de la comunidad.
- la media anual de la comunidad.

138. Hacer una Iuncion que reciba por parametros 2 matrices: A
FN
(de F Iilas * N columnas) y B
NC
(N
Iilas * C columnas) y los valores de F, N, y C, y devuelva por parametro la matriz producto P
FC
(F
Iilas * C columnas). Segun los calculos indicados:

Matriz A Matriz B Matriz P
A
11
A
12
` B
11
B
12
B
13
÷ A
11
*B
11
¹ A
12
*B
21
A
11
*B
12
¹ A
12
*B
22
A
11
*B
13
¹ A
12
*B
23

A
21
A
22
B
21
B
22
B
23
A
21
*B
11
¹ A
22
*B
21
A
21
*B
12
¹ A
22
*B
22
A
21
*B
13
¹ A
22
*B
23

A
31
A
32
A
31
*B
11
¹ A
32
*B
21
A
31
*B
12
¹ A
32
*B
22
A
31
*B
13
¹ A
32
*B
23


139. Programa que lea jugadas de seis numeros de loteria primitiva y cargue en un vector el numero de
veces que sale cada numero. Se leeran jugadas mientras el operador desee. Se utilizaran dos
Iunciones que:
- lea de teclado las jugadas.
- liste las Irecuencias de cada numero.

140. Programa que utilice una tabla para almacenar una serie de DNIs (no mas de 100). Utilizando un
menu para seleccionar las siguientes Iunciones:
− Leer desde teclado los DNI hasta que el usuario pulse ESC.
− Listar todos los DNIs.
− Introducido un DNI indicar si se encuentra o no en la tabla.
− Cargar en una tabla la Irecuencia con que aparece cada letra en los DNIs y mostrar dichas
Irecuencias.

141. Programa que utilice un array de tres dimensiones para almacenar la tariIa de precios de camisetas
segun los siguientes parametros:
− Talla (S,M,L,XL)
− Calidad (Primera, Segunda)
− Rappel de ventas (unidad, mas de 100, mas de 1000)
Se pide:

− Hacer una Iuncion que cargue la tabla de precios.
− Hacer una Iuncion que muestre la tariIa de precios por calidad, talla y rappel.
− Hacer una Iuncion que reciba por parametro calidad, talla y la cantidad pedida, y
devuelva el precio total.

142. Hacer un programa que utilice un vector de strings para almacenar los nombres de los alumnos de
una clase (no mas de 30) y una matriz de 30 * 5 enteros para almacenar el numero de Ialtas de cad
alumno en cada dia de la semana. Se pide:

− Una Iuncion que cargue la lista de los nombre hasta que el usuario pulse ESC.
− Una Iuncion que lea las Ialtas de cada alumno cada dia de la semana.
− Una Iuncion que muestre el total de Ialtas por alumno.
− Una Iuncion que muestre el total de Ialtas de cada dia de la semana.
Fundamentos de Programacion Efercicios. - 8/15

I.E.S. Be:miliana
− Una Iuncion que muestre el total de Ialtas semanales de la clase.
− Una Iuncion que muestre cada alumno con el porcentaje de Ialtas y un graIico de barras
proporcional.

143. Programa que lea una matriz de n*n enteros (para n·10) y calcule mediante Iunciones:

− La suma de las Iilas pares.
− La suma de los numeros primos.
− La suma de los numeros pares.


Bloque 8: Arrays de estructuras y ordenación.

144. Programa que lea una tabla con TOPE elementos con la siguiente estructura:
Codigo de articulo 5 caracteres
Descripcion 15 caracteres
Precio entero largo
y utilice un menu para seleccionar las siguientes opciones:
- leer desde teclado la tabla.
- listar el contenido de la tabla.
- dado un codigo determinar si se encuentra en la tabla y mostrar su contenido.

145. Programa que lea una Irase y cuente el numero de veces que aparece cada letra almacenandolo en un
vector con la siguiente estructura de registro:
Letra 1 caracter
Frecuencia int
Inicialmente el vector esta vacio y solo contendra un registro por cada letra distinta.

146. Programa que lea una tabla con TOPE elementos con la siguiente estructura:
Codigo de articulo 5 caracteres
Descripcion 15 caracteres
Precio entero largo
Existencias entero largo
Stock entero largo
y utilice un menu para seleccionar las siguientes opciones:
- leer desde teclado la tabla.
- listar el contenido de la tabla.
- realizar una busqueda lineal por codigo.
- realizar una busqueda dicotomica por codigo.
- ordenar por codigo utilizando el metodo de la baraja.
- ordenar por precio utilizando el metodo de seleccion directa.
- ordenar por existencias utilizando el metodo de la burbuja.
- ordenar por stock utilizando el metodo de la burbuja con test.

147. La empresa SIGMA 2, se dedica a la realizacion de encuestas. Le ha sido encargado un estudio sobre
el numero de diputados que obtendra un determinado partido politico en las proximas elecciones
generales.

Despues de realizar una serie de encuestas sobre la opinion de los votantes desea conocer cuantos
escaños tendra cada partido teniendo en cuenta la ley de D`Hont para la eleccion de los diputados.
La citada ley considera que si una provincia tiene derecho a X diputados, se dividen los votos
conseguidos por cada partido entre 1,2,3,... X. Tomando despues los X valores que resulten de dichas
divisiones se sabra cuantos escaños consigue cada partido. Por ejemplo: Si tenemos los partidos A, B
y C con 100, 40 y 12 votos cada uno en una provincia con derecho a 3 diputados la distribucion de
escaños tendra en cuenta que:
Nºvotos A/1 ÷ 100, nºvotos A/2 ÷ 50, nºvotos A/3 ÷ 33.3
Nºvotos B/1 ÷ 40, nºvotos B/2 ÷ 20, nºvotos B/3 ÷13.3
Nºvotos C/1 ÷ 12, nºvotos C/2 ÷ 6, nºvotos C/3 ÷4
Fundamentos de Programacion Efercicios. - 9/15

I.E.S. Be:miliana
Donde los mayores valores son nº votos A/1, nº votos A/2 y nº votos B/1, con lo que A conseguiria 2
escaños y B uno, pues A tiene dos valores en la lista de los 3 mayores y B uno.

Tomando como datos el numero de diputados asignados a una provincia, los partidos que se
presentan en esa provincia, los nombres de los candidatos de cada partido y el numero de votos
conseguido por cada partido, debe realizar un programa que muestre en pantalla los nombres de los
diputados elegidos indicando a que partido pertenecen.

Bloque 9: Argumentos de main.

148. Programa que realice una salida de este tipo:
Hola nombre
donde nombre sea un argumento de main()
149. Programa que cuente hacia atras a partir de un numero introducido en la linea de ordenes y que
produzca un pitido una vez haya llegado a 0.
150. Programa que lea 2 cadenas en la linea de ordenes y las muestre concatenadas.
151. Programa que lea 10 numeros mediante la linea de ordenes y los muestre ordenados.
152. Programa que muestre todas las cadenas de entorno del sistema operativo.
153. Programa que detecte la cadena que deIine la busqueda de Iicheros ejecutables.
154. Programa que muestre el directorio donde se almacenan los Iicheros temporales.

Bloque 1ô: Recursividad.

155. Programa que utilizando una Iuncion recursiva calcule el Iactorial de un numero.
156. Programa que utilizando una Iuncion recursiva calcule la serie n¹(n-1)¹...¹1
157. Programa que utilizando una Iuncion recursiva calcule 2 elevado a n.
158. Programa que utilizando una Iuncion recursiva calcule x elevado a y
159. Programa que utilizando una Iuncion recursiva escriba una Irase al reves.


Bloque 11: Ficheros de texto

160. Programa que lea un Iichero de texto creado por un editor ASCII y lo muestre en pantalla. El nombre
del Iichero de entrada se proporcionara desde teclado.
161. Programa que escriba el abecedario en un Iichero de texto.
162. Programa que lea un Iichero de texto creado por un editor ASCII y lo escriba en otro Iichero. Los
nombres del Iichero de entrada y de salida se proporcionaran desde teclado.
163. Programa que lea un Iichero de texto creado por un editor ASCII y lo escriba en otro Iichero
codiIicado de algun modo (por ejemplo sumandole 3 al caracter leido). Los nombres del Iichero de
entrada y de salida se proporcionaran desde teclado.
164. ModiIicar el programa anterior para que de opcion a codiIicar o decodiIicar. Probarlo abriendo los
archivos en modo binario y en modo texto. Para el segundo caso comprobar, que los saltos de linea
se codiIican correctamente.
165. Hacer un programa que lea un Iichero de texto, cuyo nombre se introducira por teclado, y lo liste por
pantalla numerando las lineas.
166. Hacer un programa que lea un Iichero de texto, cuyo nombre se introducira por teclado, y lo liste por
pantalla haciendo una pausa cada 24 lineas, mostrando el mensaje: «Pulse una tecla para continuar»
167. Hacer un programa que lea un Iichero de texto y lo liste por pantalla haciendo una pausa cada 24
lineas. Al Iinal debera mostrar el total de vocales y de consonantes con sus respectivos porcentajes
168. Programa que lea un Iichero de texto creado por un editor ASCII y lo escriba en otro Iichero. Los
nombres del Iichero de entrada y de salida se proporcionaran desde teclado.
169. Hacer un programa que lea un Iichero de texto, cuyo nombre se introducira por teclado, y lo liste por
impresora numerando las lineas. Algunas impresoras retienen en su buIIer los ultimos caracteres
recibidos sin imprimirlos. Para que se impriman es necesario enviar un codigo de Form Feed ASCII
12. Tambien puede servir una secuencia de escape como '\0¨ o '\n¨, en las impresoras LaserJet de
HP puede ser necesario enviar '\33E¨.

Fundamentos de Programacion Efercicios. - 10/15

I.E.S. Be:miliana
170. Programa que acepte como argumento de main un archivo de texto y lo muestre por pantalla con
pausa cada 24 lineas. Se debera controlar el nº de parametros introducidos.
171. Programa que acepte como argumento de main un archivo de texto y lo imprima por la impresora. Se
debera controlar el nº de parametros introducidos.
172. Programa que ecepte como argumento de main un archivo origen y el nombre del archivo destino y
copie el origen en el destino. El archivo origen podra ser de tipo binario. Se debera controlar el nº de
parametros introducidos.
173. Programa que lea un archivo de texto caracter a caracter y cuente el numero de palabras que contiene.
174. Programa que lea un archivo de texto y lo escriba en otro archivo al reves. Utilizando una Iuncion
recursiva.
175. Programa que lea todo lo que se escribe en pantalla y lo grabe en un archivo de texto. Se parara de
leer cuando se pulse la tecla de ESC. Probar a utilizar la combinacion CTRL-Z.
176. Hacer un programa que lea un Iichero de texto y genere otro Iichero con todas las letras en
mayuscula. Utilizar una Iuncion que pase a mayusculas la letra leida. Esta Iuncion debera convertir
tambien la Ñ y las vocales acentuadas. Se introducira el nombre del archivo Iuente y el del nuevo a
crear.
177. Hacer un programa que lea un Iichero de texto e indique el numero de veces que aparece cada vocal
(mayusculas o minusculas). Se introducira por teclado el nombre del archivo a leer.

Ej.: Contenido del Iichero de entrada:

" Un contador debe
iniciali:arse " Salida que deberia aparecer:




A ÷ 3
E ÷ 3
I ÷ 4
O ÷ 2
U ÷ 1
Fundamentos de Programacion Efercicios. - 11/15

I.E.S. Be:miliana
Bloque 12: Ficheros binarios

178. Hacer un programa que cree, consulte y liste (por pantalla e impresora) una agenda teleIonica. El
Iichero tiene la siguiente estructura:

Nombre 30 caracteres
Direccion 30 caracteres
TeleIono 9 caracteres

179. Realizar un programa que lleve el mantenimiento de un Iichero de almacen con la siguiente
estructura:

Codigo¸articulo 5 caracteres
Descripcion 15 caracteres
Precio entero largo
Existencias entero largo
Stock¸min entero largo
Cod¸Proveedor 5 caracteres
Borrado 1 caracter (Contendra * si esta marcado para borrar)

NOTA: Los registros marcados con * para ser borrados posteriormente, deberan ser ignorados en
todas las operaciones de busqueda y listados.

Utiliza un menu para seleccionar entre las siguientes Iunciones:

• Cargar registros desde teclado.
• Listar el contenido del Iichero por pantalla haciendo una pausa cada 22 registros.
• Realizar una busqueda secuencial por codigo de articulo mostrando su contenido y dando opcion
a modiIicar el contenido del registro o a marcarlo para borrado.
• Listar los registro cuyas existencias esten por debajo del stock minimo.
• Imprimir todos los registros por impresora.
• Imprimir, por impresora, todos los registros cuyas existencias esten por debajo de stock minimo.
• Crear un nuevo archivo con los registros que no tienen * en el campo borrado, eliminar el Iichero
antiguo y renombrar el nuevo.

180. Se dispone de dos archivos con la misma estructura de la agenda teleIonica, ambos ordenados por el
campo nombre. Se pide hacer un programa que genere un Iichero que sea la Iusion de los dos
anteriores.

181. Hacer un programa que comprima un archivo del siguiente modo: Leera el archivo a comprimir
caracter a caracter y guardara en un registro con la siguiente estructura:

Car 1 caracter
Num byte (char)

El caracter leido en Car y el numero apariciones contiguas en Aum. Si aparece mas 255 veces se
utilizara otro registro. Por ejemplo:







Fichero a comprimir Fichero comprimido

Realizar tambien el programa que descomprima.


aaaaaabbbbbbb cccc Car Num
a 6
b 7
2
c 4
Fundamentos de Programacion Efercicios. - 12/15

I.E.S. Be:miliana
182. Se tiene un archivo con la siguiente estructura:

Cod¸articulo 5 caracteres
Movimiento 1 caracter (E/S entrada o salida)
Fecha 6 caracteres
Cantidad entero largo

Se pide generar dos archivos: uno con todas las entradas y otro con todas las salidas, con el siguiente
Iormato:
ENTRADAS SALIDAS
Cod¸articulo Cod¸articulo
Fecha Fecha
Cantidad Cantidad

183. Disponemos de un Iichero de ventas con la siguiente estructura:

Cod¸vendedor 3 caracteres
Cod¸articulo 4 caracteres
Fecha 6 caracteres
Cantidad entero largo

Se encuentra ordenado por Codigo de vendedor, y por cada vendedor por codigo de articulo. Se pide:

• Realizar un listado por impresora con ruptura por codigo de vendedor segun el siguiente
Iormato:


































ACUMULADO DE VENTAS POR VENDEDOR Pag.- xx

Vendedor Articulo Fecha Cantidad

001
A333 10-04-05 100
A444 10-04-05 20
A444 11-04-05 10
A444 12-04-05 20
A555 10-04-05 30

Total por vendedor: 180

002
A333 10-04-05 50
A333 11-04-05 50
A666 10-04-05 100

Total por vendedor: 200

Total general: 380
Fundamentos de Programacion Efercicios. - 13/15

I.E.S. Be:miliana
• Realizar un listado por impresora con ruptura por codigo de vendedor y por codigo de
articulo segun el siguiente Iormato:



































184. Añadir al programa numero 2 las siguientes opciones en el menu:

• Opcion que ordene el Iichero por el campo codigo de proveedor. Para ello se cargara el Iichero
en una tabla (se sabe que el Iichero no contiene mas de 100 registros, aunque tambien se podria
reservar espacio para la tabla de Iorma dinamica calculando el tamaño de Iichero), la ordene por
el campo codigo de proveedor utilizando cualquiera de los algoritmos vistos en clase, y la guarde
ordenada en el Iichero.

• Opcion que imprima el Iichero con ruptura de control por codigo de proveedor contando el
numero de articulos que suministra. Evidentemente, el Iichero debe estar ordenado por codigo de
proveedor.

185. Realizar un programa que realice la actualizacion de un archivo maestro a partir de uno de
movimientos. En la Iigura siguiente se muestra un ejemplo del Iuncionamiento:

Archivo maestro de ALMACEN Archivo de MOVIMIENTOS
Cod Descripcion PVP Stock Mov Cod Descripcion PVP Stock
100 Impresora HP 260,00 20 A 095 Fax 56K 70,00 20
104 Teclado ACER 26,00 25 B 104
115 Pentium 4 280,00 10 M 115 275,00
120 Memoria 256M 41,00 10 A 118 Minitorre 25,00 20
M 120 ¹5
ACUMULADO DE VENTAS POR VENDEDOR Y ARTICULO Pag.- xx

Cod-vendedor Cod-Articulo Fecha Cantidad

001
A333
10-04-05 100

Total por articulo: 100
A444
10-04-05 20
11-04-05 10
12-04-05 20

Total por articulo: 50
A555
10-04-05 30

Total por articulo: 30
Total por vendedor: 180
002
A333 10-04-05 50
11-04-05 50

Total por articulo: 100
A666
10-04-05 100

Total por articulo: 100
Total por vendedor: 200
Total general: 380
Fundamentos de Programacion Efercicios. - 14/15

I.E.S. Be:miliana
Nuevo archivo maestro de ALMACEN
Cod Descripcion PVP Stock
095 Fax 56K 70,00 20
100 Impresora HP 260,00 20
115 Pentium 4 275,00 10
118 Minitorre 25,00 20
120 Memoria 256M 41,00 15

El algoritmo podria resumirse de la siguiente Iorma:

1. Abrir los tres Iicheros (el maestro, el de movimientos y el nuevo maestro que surgira de la union
de los anteriores). Leer el primer registro del maestro y del de movimientos.
2. Comparar el valor de las claves de los dos Iicheros (ambos deben estar obligatoriamente
ordenados por el mismo campo clave):
- Claves iguales: se ha localizado el registro buscado y se eIectua el tratamiento indicado
(baja o modificación) en el Iichero de transacciones. Despues se vuelve a leer del Iichero
de movimientos.
- Clave del Iichero de movimiento mayor que clave del Iichero maestro: No se ha localizado
el registro buscado, se copia el registro del Iichero maestro y se vuelve a leer del Iichero
maestro.
- Clave del Iichero de movimiento menor que clave del Iichero maestro: El registro buscado
no existe, si es una modiIicacion se trata de un error, mientras que si es una inserción se
realiza. En ambos casos se vuelve a leer del Iichero de transacciones.
3. El proceso concluye cuando uno de los dos Iicheros acaba. Si se acaba el de movimientos se
copia el resto del maestro al nuevo maestro. Si se acaba el maestro el resto de los registros del
Iichero de transacciones se procesan como errores en el caso que no se traten de altas que sigan
la secuencia.
4. Al Iinal del proceso el Iichero de movimientos y el maestro desapareceran, y el nuevo maestro se
renombra como Iichero secuencial.

186. Un laboratorio de productos Iarmaceuticos posee distribuidores repartidos por Andalucia. Dicha
empresa desea inIormatizar la gestion del calculo de comisiones por ventas, para lo cual nos pide que
desarrollemos un programa que conste de un menu principal con las siguientes opciones:
a) Carga de un archivo con la siguiente estructura:

CODIGO-DISTRIBUIDOR..: 3 CARACTERES.
NOMBRE............................: 25 CARACTERES.
DIRECCION.......................: 25 CARACTERES.
PROVINCIA.......................: 15 CARACTERES.
TELEFONO........................: 9 CARACTERES.
° DE COMISION...............: ENTERO
VENTAS|MES|..................: VECTOR DE 12 FLOTANTES que contendra el
acumulado de ventas de cada mes.

b) Dado el CODIGO del distribuidor mostrar todos sus datos en pantalla, junto con un total anual
de ventas.

c) Generar un listado por impresora que muestre el CODIGO y NOMBRE de cada distribuidor
junto con su acumulado anual de ventas y su total de comision, que se obtendra al aplicar al total
anual de ventas el porcentaje de comision correspondiente. Es decir:

(ACUMULADO¸ANUAL * PORCENTAJE¸COMISION) / 100






Fundamentos de Programacion Efercicios. - 15/15

I.E.S. Be:miliana
Al Iinal del listado debera aparecer un total de ventas y un total de comisiones. Detalle del
listado:




LABORATORIOS RINCON S.A.

COMISIONES POR VENTAS DEL AÑO 2005


COD-DIST. NOMBRE VENTAS COMISION

xxx xxxxxx25xxxxxxx 9999999 9999999
. . .

TOTALES...: 9999999 9999999




187. La agencia matrimonial 'SU MEDIA NARANJA`, desea inIormatizar el sistema de emparejamiento
de clientes. Por ello nos pide que desarrollemos un programa con un menu para seleccionar entre las
siguientes opciones:

a) Carga de un archivo con la siguiente estructura:

CODIGO.................: 3 CARACTERES.
NOMBRE...............: 25 CARACTERES.
DIRECCION..........: 25 CARACTERES.
TELEFONO...........: 9 CARACTERES.
EDAD....................: 1 ENTERO.
SEXO.....................: 1 CARACTER.
HOBBY.................: ARRAY DE 4 STRING|10]

Ejemplo de algunos registros del archivo:

Cod. Nombre Direccion TeleIono Edad Sexo Hobby(1) Hobby(2) Hobby(3) Hobby(4)
021 Paula Nieto Toro C/ Cual nº 8 122.11.08 16 F Leer Cine Bailar SurI
022 Antonio Ruiz Gil C/ Tal nº 2 222.22.22 18 M SurI Cine InIormatica Natacion

b) Listado (controlando el salto de pagina) de todos los registros que cumplan las condiciones
solicitadas por teclado:

÷ Sexo solicitado.
÷ Edad dentro de un rango. E1 ·÷ edad ·÷ E2
÷ Un determinado hobby.

Por ejemplo, alguien podria solicitar: Muferes, entre 15 v 2ô años que les guste la informática.