Universidad Nacional Experimental de Guayana Asignatura: Programación II
Vice-Rectorado Académico Docente: Ing. Andrés Caniumilla
Coordinación de Ingeniería en Informática Lapso: 2012-I Pág: 1
Guía de Ejercicios I (Obj. 1 – 8)
Básicos (Objetivos 1, 2, 3 y 4)
1. Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de interés mensual.
¿Cual será la cantidad de dinero que esta persona tendrá al cabo de n meses si la ganancia de cada
mes es reinvertida?.
2. En un supermercado se hace una promoción, mediante la cual el cliente obtiene un descuento
dependiendo de un número que se escoge al azar. Si el numero escogido es menor que 74 el
descuento es del 15% sobre el total de la compra, si es mayor o igual a 74 el descuento es del
20%. Obtener cuanto dinero se le descuenta.
3. Escriba un programa que lea tres números enteros y los imprima en orden ascendente.
4. Escriba un programa que lea un número entero n mayor a cero que identifica un número de
segundos, y calcule e imprima el número de horas, minutos y segundos contenidos en ella.
Ejemplo: Para n igual 15723 se debe imprimir 4 horas, 22 minutos y 3 segundos.
5. Escriba un programa que dada una hora en formato (horas, minutos, segundos) indiqué cual será
el tiempo dentro de un segundo.
6. Escriba un programa que lea una secuencia de números enteros y calcule el mayor, menor y el
promedio de la secuencia. La secuencia termina cuando se ingresa el número cero.
7. Escriba un programa que multiplique dos números por medio de sumas sucesivas.
8. Escriba un programa que divida dos números por medio de restas sucesivas.
9. Escriba un programa que dado dos números x y n, permita calcular la suma de la progresión
geométrica: 1 + x + x2 + ... + Xn.
10. Escriba un programa que lea una secuencia de caracteres y cuente la frecuencia de un carácter n.
La secuencia terminará cuando se lea el carácter punto (.).
11. Escriba un programa que lea una secuencia de caracteres y cuente el número de veces que cada
vocal se repite. El texto se lee carácter a carácter. El texto acaba con un carácter ‘;’. Una vez
leído, hay que imprimir el número de apariciones de cada tipo de vocal junto con el número total
de consonantes. A continuación se imprimirá el porcentaje de cada tipo de letra considerado en
relación con el total de letras leídas.
Funciones (Objetivos 1, 2, 3, 4 y 5)
Universidad Nacional Experimental de Guayana Asignatura: Programación II
Vice-Rectorado Académico Docente: Ing. Andrés Caniumilla
Coordinación de Ingeniería en Informática Lapso: 2012-I Pág: 2
NOTA: No se pueden utilizar funciones predefinidas del Lenguaje C que realicen lo mismo que se pide
hacer.
12. Escriba una función que dado un número x calcule el seno del mismo mediante la serie: x - x 3/3!
+ x5/5! - x 7/7! + …
13. Escriba una función que dado un número entero n cuente el número de cifras o dígitos.
14. Escriba una función que reciba el valor de n (el cual es mayor a cero), calcule y devuelva la
suma: 1 + 1/2 + 1/3 +.....+ 1/n. (Serie Armónica).
15. Escriba una función que dados dos números enteros a y b realice la operación de potencia ab.
16. Escriba una función para determinar si un valor n es un número primo.
17. Escriba una función que permita calcular el factorial de un número n.
18. Escriba una función que dado un número entero positivo n produzca el número invertido.
19. Escriba una función lógica que reciba un número natural y compruebe si la suma de sus cifras
pares es igual a la suma de las cifras impares. Por ejemplo, el número: 3547863 cumple esta
propiedad.
20. Escriba una función lógica que determine si un valor n es un número perfecto. Un número
perfecto es un entero positivo, que es igual a la suma de todos los enteros positivos (excluido el
mismo) que son divisores del número. Ejemplo: 6 es un número perfecto, ya que 1+2+3 = 6.
21. Escriba una función que reciba un número entero (en base binaria) y devuelva su equivalente en
base decimal. Ejemplo: Para n igual a 11010 se debe devolver el valor de 26. Nota: No es
necesario el uso de cadenas de caracteres.
22. Escriba una función que reciba un número entero mayor a cero y determine si el mismo es
palíndromo, es de destacar que un palíndromo es un número o una frase de texto, que se lee igual
hacia delante y hacia atrás. Por ejemplo, cada uno de los siguientes números son palíndromos:
12321 y 4554. No se debe usar vectores para dar solución al problema.
Recursividad (Objetivos 1, 2, 3, 4, 5, 6, 7)
23. Escriba una rutina recursiva que imprima en forma invertida los dígitos de un número entero.
24. Escriba una función recursiva que calcule el factorial de un número entero (n).
25. Escriba una función recursiva que encuentre el máximo común divisor (mcd) de dos números a y
b. a y b son enteros mayores que 0.
Universidad Nacional Experimental de Guayana Asignatura: Programación II
Vice-Rectorado Académico Docente: Ing. Andrés Caniumilla
Coordinación de Ingeniería en Informática Lapso: 2012-I Pág: 3
26. Escriba una función recursiva que reciba dos enteros a y b tales que a, b >= 1 y calcule la división
entera de dichos números.
27. Escriba una función recursiva que sume los (n) primeros números enteros positivos.
28. Escriba una función recursiva que calcule los (n) primeros números de la serie de Fibonacci. Se
conoce que un número de Fibonacci se compone por la suma de los dos términos anteriores, los
dos primeros términos son F1=F2=1.
29. Escriba una función recursiva exponente tal que dada la base y el exponente como números
enteros devuelva su resultado (potencia). La base será mayor que cero y el exponente mayor o
igual a cero.
Cadenas (Objetivos 1, 2, 3, 4, 5, 6 y 7)
30. Escriba una función que reciba una cadena de caracteres y devuelva su longitud.
31. Escriba una función que reciba una cadena de caracteres y retorne la cadena sin espacios en
blanco.
32. Escriba una función que reciba una cadena de caracteres y retorne la cadena en mayúsculas.
33. Escriba una función que reciba una cadena de caracteres y retorne la cadena invertida.
34. Escriba una función que reciba una cadena de caracteres cad y una variable ch de tipo char. La
función devolverá la posición de la primera ocurrencia de ch en cad.
35. Escriba una función que reciba una cadena de caracteres cad y una variable ch de tipo char. La
función devolverá la posición de la última ocurrencia de ch en cad.
36. Escriba una función que permita comparar dos cadenas de caracteres.
37. Escriba una función que reciba dos cadenas de caracteres y devuelve una nueva cadena que
contenga la concatenación de ambas.
38. Escriba una función que reciba dos cadenas de caracteres, cad1 y cad2, y un entero p. La función
retornará la posición de la primera ocurrencia de cad1 en cad2 a partir de la posición p.
39. Escriba una función que permita eliminar una secuencia de caracteres dentro de una cadena de
caracteres a partir de una determinada posición (p), un número determinado de dígitos (num).
40. Escriba una función que reciba una cadena de caracteres y retorne la cadena encriptada sumando
2 al código ASCII de cada uno de sus caracteres.
Universidad Nacional Experimental de Guayana Asignatura: Programación II
Vice-Rectorado Académico Docente: Ing. Andrés Caniumilla
Coordinación de Ingeniería en Informática Lapso: 2012-I Pág: 4
41. Escriba una función lógica que reciba una cadena de caracteres y determine si esta cadena es
palíndrome.
42. Escriba una rutina que reciba una cadena de caracteres y devuelva el carácter que se repite con
mayor frecuencia dentro de la cadena de caracteres. La cadena debe ser recibida y manejada
como apuntador. La misma no debe ser modificada.
43. Escriba una rutina que reciba una cadena de caracteres y proceda a contar el número de palabras
que contiene. Se supone que las palabras están separadas por uno o más espacios en blanco. La
cadena debe ser recibida y manejada como apuntador. La misma no debe ser modificada.
Ejemplo: Para “La casa de la mujer” debe devolver 5.
Vectores (Objetivos 1, 2, 3, 4, 5, 6 y 7)
44. Si xrepresenta la media de los números x1 , x 2 ,..., x n , entonces la varianza es la media de los
1 n
cuadrados de las desviaciones de los números de la media: v = ∑
n i =1
( x i − x) 2 y la desviación
estándar es la raíz cuadrada de la varianza. Escriba un programa que lea una secuencia de
números flotantes, los almacene y a continuación calcule e imprima su media, valor mínimo,
valor máximo, varianza y desviación estándar.
45. Escriba una rutina que reciba un precio de un producto y una cantidad para pagarlo, calcule la
cantidad de monedas y billetes (vuelto a devolver). Monedas: 1, 2, 5, 10, 20, 50, 100 y 500 Bs.
Billetes: 1000, 2000, 5000, 10000 y 50000 Bs.
46. Escriba una rutina que reciba un arreglo de N números flotantes y lo invierta.
47. Escriba una rutina que reciba un arreglo de N números enteros y un número entero num, y luego
proceda a calcular la ocurrencia de num dentro del arreglo.
48. Escriba una rutina que reciba un arreglo de N números flotantes, y luego calcule la media de los
elementos que se encuentran en las posiciones pares y la media de los elementos que se
encuentran en las posiciones impares.
49. Escriba una rutina que reciba un arreglo de N números enteros y proceda a verificar si el mismo
se encuentra ordenado en forma descendente.
50. Escriba una rutina que reciba un arreglo de N números enteros y proceda a calcular el número de
valores diferentes que se encuentran en el mismo.
51. Escriba una rutina que reciba un vector de N números enteros positivos y proceda a eliminar
(sustituir por -1) los elementos duplicados. Es de destacar que los elementos sustituidos o
duplicados deben quedar a la izquierda del vector. Adicionalmente la función debe devolver el
Universidad Nacional Experimental de Guayana Asignatura: Programación II
Vice-Rectorado Académico Docente: Ing. Andrés Caniumilla
Coordinación de Ingeniería en Informática Lapso: 2012-I Pág: 5
número de elementos eliminados o sustituidos. Es de destacar que los elementos del vector no
tienen un orden en particular.
52. Escriba una rutina que reciba un arreglo de N números enteros y lo ordene por el método de
Burbuja en forma ascendente. (Ordenación por Burbuja)
53. Escriba una rutina que reciba un vector vacío de números enteros (sin valores) de tamaño N y
proceda a realizar la lectura de N valores, al tiempo que los va ordenando en forma ascendente en
el arreglo. Al finalizar la rutina el vector está completamente lleno y ordenado de menor a mayor.
Nota: Se ordena mientras se van leyendo los valores uno a uno. (Ordenación Por Inserción)
54. Escriba una rutina que reciba dos (02) vectores A y B de números enteros de tamaño M que no
contienen elementos duplicados, los cuales se encuentran ordenados en forma ascendente y un
tercer vector C (vacío) igualmente de tamaño M+M. Se desea que Ud. realice la ordenación en
forma ascendente de los vectores A y B en el vector vacío C, siguiendo para tal efecto el
siguiente algoritmo: Tomar uno a uno los elementos de cada vector, cuando ambos sean iguales
copiar ambos hasta el vector C y tomar uno nuevo de cada vector, en caso contrario tomar el
menor valor y copiar hasta el vector C y tomar uno nuevo de ese vector, repetir esto hasta que se
alcance el final de alguno de los vectores. Al finalizar el algoritmo el vector C contendrá los
elementos de ambos vectores en orden ascendente. (Ordenación por Mezcla).
55. Escriba una rutina entera que reciba un arreglo de N números enteros y un valor entero num. Se
debe determinar si el valor (num) se encuentra en el arreglo. Se debe buscar de forma secuencial
hasta que lo encuentre o llegue al final del arreglo. La función debe retornar la posición en el
arreglo si el valor (num) fue encontrado o -1 de lo contrario. El vector no se encuentra ordenado.
(Búsqueda Secuencial).
56. Repetir el ejercicio anterior, pero considerando que el arreglo se encuentra ordenado
ascendentemente (Búsqueda Secuencial Mejorada).
57. Escriba una rutina entera que reciba un arreglo de N números enteros y un valor entero num. Se
debe determinar si el valor (num) se encuentra en el arreglo utilizando una búsqueda binaria. La
función debe retornar la posición en el vector si el valor (num) fue encontrado o -1 de lo
contrario. El vector debe encontrarse ordenado en forma ascendentemente. (Búsqueda Binaria)
Matrices (Objetivos 1, 2, 3, 4, 5, 6 y 7)
58. Escriba una rutina que reciba una matriz de NxN de números enteros y proceda a determinar y
devolver la posición (i,j) de la matriz en la que se encuentra el valor máximo.
59. Escriba una rutina que reciba dos matrices de NxM y realice la suma de estas matrices
almacenando el resultado en una tercera matriz resultante. Las matrices para que puedan sumarse
deben tener las mismas dimensiones.
Universidad Nacional Experimental de Guayana Asignatura: Programación II
Vice-Rectorado Académico Docente: Ing. Andrés Caniumilla
Coordinación de Ingeniería en Informática Lapso: 2012-I Pág: 6
60. Escriba una rutina lógica que reciba una matriz de NxN de números enteros y luego verifique si
es simétrica. Una matriz es simétrica si A(i,j) = A(j,i) para todo i, j.
61. Escriba una rutina lógica que reciba una matriz de NxM de números enteros y luego verifique si
es mágica. Una matriz mágica es aquella en que la suma de cada una de sus filas, columnas y
diagonales tienen el mismo valor.
62. Escriba una rutina que reciba una matriz de NxM de números enteros y luego imprima todos los
puntos de silla de la matriz. Un punto de silla es el máximo de su fila y el mínimo de su columna.
63. Escriba una rutina lógica que reciba una matriz de NxM de números flotantes y luego verifique si
es triangular superior. Una matriz triangular superior es aquella en la cual todos los elementos
situados bajo su diagonal principal son cero.
64. Escriba una rutina que reciba dos matrices A y B de números flotantes, realice la multiplicación
de estas dos matrices y la almacene en una matriz C resultante. Para multiplicar dos matrices
debe cumplirse que el número de columnas de A debe ser igual al número de filas de B.
65. Escriba una rutina que reciba una matriz de números enteros de dimensión M x N y luego calcule
la suma de los elementos situados en la parte superior de la diagonal principal y la suma de los
elementos situados en la parte inferior de la diagonal principal.
66. Escriba una función que reciba una matriz de números flotantes de dimensión M x N, y devuelva
la suma de los elementos de la diagonal principal y la suma de los elementos de la diagonal
secundaria en forma independiente.
67. Escriba una rutina que reciba una matriz de NxM de números enteros, y luego calcule la suma de
sus componentes cuya suma de subíndices sean par e impar respectivamente.
68. Escriba una rutina que reciba una matriz de NxN de números enteros, y luego invierta los
elementos de la diagonal secundaria.
69. Escriba un programa que tome las N primeras palabras de un texto ingresado por teclado carácter
a carácter, las ordene en forma ascendente y las imprima. Las palabras han de tener 40 caracteres
como máximo.
70. Escriba una rutina que reciba una Matriz de MxN números flotantes previamente ya leídos, y
desarrolle un algoritmo que permita ordenar los elementos de la matriz en forma descendente, es
decir de mayor a menor. Es de destacar que no se deben ordenar las filas de la matriz en forma
independiente.