Vous êtes sur la page 1sur 44

Profesores Colaboradores

Lcdo. Rubn Cova

Lcdo. David Licet

Lcdo. Luis Rigual

Lcdo. Gregorio Ruiz

Lcda. Rosemigd Mago

Lcda. Nakary Ortega. MSc

Ing. Leonardo Malav. MSc

Lcdo. Anbal Torres

Lcda. Lisblein Arismendi

TSU Christian Hernndez

TSU Osman Pineda

TSU Edinson Gonzlez

TSU Rodolfo Ortz

TSU Vctor Uzcategui

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 2

ndice
Pgina Objetivo 1.- Arreglos, Cadenas de Caracteres, Rutinas de 4 Ordenamiento y Rutinas de Bsqueda Objetivo 2.- Funciones y Recursividad Objetivo 3.- Punteros o Apuntadores Objetivo 4.- Estructuras Objetivo 5.- Archivos 16 25 32 40

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 3

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda


1. Elabore un programa en C que lea en una lista, una serie de nmeros enteros, calcule la media de los n nmeros e indique cuantos de los nmeros dados son iguales a la media.

2. Escribir un programa que lea 5 nmeros y los guarde en un arreglo, luego pida un nuevo nmero e indique si este se encuentra dentro del arreglo y en que posiciones

3. Escribir un programa que lea dos vectores de igual dimensin y calcule el vector suma y el vector diferencia. Suponga que ambos arreglos tienen dimensin n, la salida debe ser los arreglos procesados.

4. Escribir un programa que lea un conjunto de n valores y cree dos arreglos, uno que contenga los nmeros pares y otro que contenga los nmeros impares.

5. Elabore un programa que lea 2 arreglos de n elementos cada uno e intercambie sus elementos, la salida debe ser los arreglos antes y despus del intercambio.

6. Escribir un programa que lea una lista de valores y construya dos arreglos, uno con los que estn dentro del intervalo (a, b), donde a y b son nmeros dados, y otro con los valores que estn fuera del intervalo, la salida debe ser el arreglo original y los arreglos creados, si no hay elementos dentro y fuera del arreglo debe decirlo.

7. Disee un programa que lea una serie de nombres de un curso determinado y sus respectivas notas, luego cree 2 arreglos solo con

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 4

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda


los nombres. Uno que contenga los nombres de los alumnos aprobados y otro con los alumnos reprobados.

8. Una orquesta est formada por n msicos, escribir un programa que lea dos vectores nombre y edad, para luego determinar cual de las personas es ms vieja y cual es ms joven, se debe imprimir el nombre de la persona con su respectiva edad.

9. Disee un programa que lea un vector x de n elementos y construya otro vector que contenga al vector x comprimido, es decir, que no existan elementos iguales.

10. Disee un programa que lea un vector x de n elementos y construya otro vector que contenga al vector x en orden inverso. El programa debe imprimir los dos arreglos.

11. Elabore un programa que dados dos arreglos a y b de m y n elementos respectivamente realice la interseccin y la unin en forma de conjunto. Se debe mostrar los dos arreglos originales, el vector unin y el vector interseccin.

12. Elabore un algoritmo que lea un arreglo de caracteres y determine si la frase es un palndromo, una palabra es palndromo si se lee de igual forma en ambos sentidos.

13. Elabore un programa que cargue un arreglo con 15 nmeros de cdulas, stos no deben estar repetidos. Si la persona introduce un nmero de cdula y ya existe en el vector se debe emitir un mensaje diciendo: Usted ya fue inscrito. En caso de que no exista debe ser agregado a la lista. Una vez cargado el vector debe imprimirlo.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 5

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda

14. Elabore un programa que permita realizar bsquedas en un vector con los nmeros de cdulas de 20 personas que pertenecen a la empresa: ZTA C.A. Se van a hacer bsquedas hasta que el usuario lo desee. Si la cdula a buscar no existe escribir el mensaje persona no pertenece a la empresa. Al finalizar la bsqueda se debe imprimir cuantas cdulas pertenecan a la empresa y cuantas fueron bsquedas fallidas.

15. Elabore un programa en C que permita cargar 2 matrices de orden 4x4 y que haga la suma de las matrices almacenando el resultado en una matriz C.

16. Elabore un programa que cargue 2 matrices de orden 2x2 c/u y calcule el producto de ambas matrices en una matriz c.

17. Elabore un programa en C que cargue en una matriz de 3x7 el nmero de zapatos vendidos por tres vendedores cada da de la semana. Se deben calcular los totales vendidos por cada vendedor durante la semana y los totales vendidos por da en la zapatera. Se deben utilizar 4 arreglos adicionales para: almacenar los das de la semana, almacenar los nombres de los tres vendedores. Almacenar las ventas totales semanales de cada vendedor y los totales de las ventas diarias.

18. Elabore un programa en C que lea las temperaturas que se han presentado durante las 24 horas en una determinada semana y se debe calcular la media de las temperaturas por cada da. 19. Elabore un algoritmo donde se simule el juego de la guerra. El juego se basa en adivinar las posiciones donde el enemigo posee sus

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 6

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda


equipos de guerra (barcos, aviones y tanques) y destrurselos. El jugador tiene 5 oportunidades para adivinar todo el armamento enemigo. Cada armamento de guerra posee una puntuacin: tanques 500 puntos, barcos 300 puntos y aviones 100 puntos. El jugador juega contra la computadora. El campo de batalla es un rea de 5 filas y 10 columnas. El jugador indica la posicin (fila y columna) donde desea realizar su disparo, si existe algn

armamento gana los puntos de dicho armamento, si no existen armamentos se van acumulando sus fallos, hasta un mximo de 5. Si el jugador adivina todo el armamento se indica un mensaje que GANO y se muestra el total de puntos acumulados. Si fall 5 veces se enva un mensaje que PERDI y se sealan el total de puntos acumulados. Se poseen en total: 5 aviones, 3 barcos y 2 tanques. Cada armamento est representado por una letra: A aviones, B barcos , T tanques y una X posicin vaca, que representa un fallo en el disparo. Leyenda
Nombre col campo Descripcin Total de columnas fil Nombre Descripcin Total de filas Matriz de posiciones, sealadas por el jugador. totbarcos tottanques totaviones fallo maxfalla i j perdio Total de barcos 3 Total de tanques 2 Total de aviones 5 Total de fallas del jugador Mxima de fallas del jugador. Subndice de las filas Subndice de las columnas. Mensaje indicando que perdio

Matriz que corresponde al campo mat_pos de batalla.

ptobarcos ptotanques ptoaviones cantbarcos cantanques cantaviones totpuntos gano

Total puntos de barcos 300 Total puntos de tanques 500 Total puntos de aviones 100 Cantidad de barcos descubiertos Cantidad tanques descubiertos Cantidad aviones descubiertos Total de puntos acumulados Mensaje indicando que gano

20. Elabore un algoritmo donde se realicen encuestas a las personas de Cuman; el encuestador realizar encuestas mientras lo desee o hasta encuestar un mximo de 100 personas. A cada persona se le pregunta:

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 7

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda


nombre, cdula, edad y sexo. Los datos de entrada deben ser validados. El encuestador debe chequear que no encueste a la misma persona, buscando el nmero de cdula entre las personas ya encuestadas. Si la cdula existe debe imprimir un mensaje indicando UD. YA FUE ENCUESTADO. Las lista de encuestados debe ser cargada insertando los valores ordenados (ascendente) por nmero de cdula. Finalizada la encuesta elimine de la lista todas las personas mayores de 60 aos y coloque, slo, sus nmeros de cdula en otro vector. Una vez eliminados los mayores de 60 aos, calcular e imprimir cuantas mujeres son menores de 20 aos, y el porcentaje de hombres con edad comprendida entre 30 y 40 aos con respecto al total de encuestados. Imprima la lista de encuestados y la lista de los nmeros de cdulas de personas mayores de sesenta aos. Leyenda
Nombre tam t_enc sexo_p nombre_p cedula_p mensaje repetida Descripcin Tamao mximo del vector Total encuestados Sexo persona encuestada Nombre persona encuestada Cdula de persona encuestada Mensaje ya fue encuestado Nombre i j k vcedula vnombre vsexo Descripcin Subndice de la lista Subndice de eliminacin Subndice de cedulas eliminadas Vector de cedulas Vector de nombres Vector de sexo Vector de edad

Switch que indica si la cedula est vedad repetida .v.=si , .f.=no

elimina (no usamos) pos

Switch que indica si el valor se debe vced_eli eliminar .v.=si, .f.=no Posicin donde se insertan o se cmujmen elimina los valores

Vector cdulas eliminadas

Cantidad de mujeres menores de 20 aos

Chom3040

Cantidad de hombre con edad Porhom3040 entre 30 y 40 aos

Porcentaje de hombres con edad entre 30 y 40 aos

resp

Respuesta continuar

la

pregunta

desea inserta

Switch que indica si el valor se debe insertar .v.=si, .f.=no

21. Elaborar un algoritmo que cargue un vector de nmeros de

50

elementos y encuentre la suma de ellos e imprima los elementos del vector y la suma calculada.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 8

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda


22. Elaborar un algoritmo que cargue dos vectores de nmeros de N elementos cada uno (N< 20). Crear otro vector con la multiplicacin de los elementos respectivos de los vectores ledos e imprimir los tres vectores.

23. Elabore un algoritmo que cargue tres vectores A, B y C de M elementos (M<15) y cree un vector NUEV de tres elementos, donde cada elemento guarde la suma de todos los elementos de cada vector. 24. Elaborar un algoritmo para clasificar personas segn su tipo de sangre. Para ello se dispondr de la siguiente informacin. Cantidad de personas (mximo 20), tipo de sangre y cdula de identidad de cada persona. Se pide un reporte que imprima las cdulas de identidad de todos los donantes, clasificadas por tipo de sangre. 25. Elabore un algoritmo que cargue un vector X de nmeros de 10 elementos y lea un valor CLAVE y averige si el valor CLAVE se

encuentra o no dentro del vector X. En caso de encontrarse se debe indicar cuantas veces aparece dicho valor dentro del vector.

26. Se tiene un vector de nmeros de N elementos y se desea reemplazar por cero (0) los elementos impares del vector. Disee un algoritmo para solucionar este problema.

27. Disee un algoritmo que cargue un vector de nmeros de N elementos (mximo 15) y que elimine un elemento dado. El

algoritmo debe determinar si el elemento a eliminar se encuentra en el vector de ser as se elimina de lo contrario se imprime un mensaje de falla. Si se elimina el elemento las posiciones de los elementos dentro del vector se deben reorganizar.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 9

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda


28. El modo de un vector de nmeros es l numero m del arreglo que se repite con mayor frecuencia. Si se repite ms de un nmero con frecuencias mximas iguales, no existe un modo. Escriba un algoritmo, que cargue un vector de nmeros de 15 elementos y averige el modo (si existe) o de una indicacin de que el modo no existe.

29. Elabore un algoritmo que cargue un vector de nmeros de N elementos y obtenga e imprima el mayor y el menor elemento de dicho vector con sus respectivas posiciones.

30. Elabore un algoritmo que cargue un vector de N(N<10) elementos. Luego ordene los elementos del vector de mayor a menor e imprima el vector ordenado.

31. Elabore un algoritmo que lea e imprima un numero entero y positivo N. Lea y escriba los N elementos de un vector A. Determine el o los elementos de la mitad del vector A. Imprima el o los subndices que identifican el o los elementos anteriores y su(s) valor(es)

correspondientes.

32. Elabore un algoritmo que lea un vector A de N elementos(N<15) que se encuentre ordenado en forma ascendente. Luego lea un valor X cualquiera y lo inserte dentro del vector A en tal forma que se mantenga el orden ascendente. Si A ya tiene un elemento que iguale al valor a insertar no haga la insercin. Imprima el vector actualizado.

33. Se tienen dos vectores. Uno de ellos con N elementos y el otro con M elemento. Dichos elementos se encuentran ordenados de menor a

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 10

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda


mayor en ambos vectores. Se pide formar otro vector de N + M elementos el cual contendr los elementos de los otros dos vectores ordenados de menor a mayor. Elabore un algoritmo para solucionar este problema. Nota: El procedimiento consiste en intercalar los dos vectores antes mencionados, por lo tanto el algoritmo NO debe ordenar vectores 34. Elabore un algoritmo que cargue dos vectores A y B de 5 y 7 elementos respectivamente. Luego forme un nuevo vector INT cuyos elementos comprenden la interseccin de los conjuntos definidos por A y B. Por interseccin se entiende que INT va a contener copias de aquellos valores que son comunes a A y B. Suponga que no existen valores duplicados dentro de los vectores A y B.

35. Elabore un algoritmo que lea una matriz de 10 filas y 8 columnas. Luego lea un numero, chequee si ese numero existe en algn elemento del arreglo ledo, si es as, imprima los subndices que identifican la ubicacin del elemento que contiene el valor del numero ledo, de lo contrario imprima el valor del numero ledo y un mensaje que diga No se encuentra dentro de la matriz.

36. Elabore un algoritmo que lea una matriz cuadrada NxN(N<10) calcule la suma de los elementos de la diagonal principal de la matriz. La suma de los elementos de la ultima fila y al suma de los elementos de la ltima columna. Imprima las tres sumas.

37. Un tablero de Damas es una matriz de 8 filas por 8 columnas. Un uno (1) representa la presencia de una ficha roja en el tablero. Un dos (2) representa la presencia de una ficha negra en el tablero. Un tres (3) representa ausencia de ficha. Se requiere calcular: El numero de fichas rojas.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 11

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda


El numero de fichas negras. Nmero total de fichas. Previamente se debe cargar la matriz. Disee un algoritmo para solucionar este problema

38. La transpuesta de una matriz es otra matriz formada intercambiando las fila y las columnas de la primera lea una matriz A de M filas y N columnas(N<M<15). Elabore un algoritmo para calcular e imprimir la transpuesta de A.

39. Elabore un algoritmo que lea una matriz de N filas y M columnas (N<10, M<15) y forme un vector con los nmeros pares que se encuentren en la matriz leda. Imprima el vector resultante.

40. El producto de dos matrices con elementos A(i,j) y B(i,j) es una tercera matriz

41. C(i,j) = A(i,1)*B(1,j) + A(i,2)*B(2,j) + . . . + A(i,N)*B(N,j). Suponiendo que el nmero de columnas de la matriz A y el numero de filas de la matriz B son ambos iguales a N. Elaborar un algoritmo para calcular el producto de dos matrices que cumplan con las condiciones antes sealadas y que adems imprima la matriz resultante.

42. Elabore un algoritmo que lea un numero entero y positivo N(N<10). Lea todos los elementos de una matriz Z de N filas y N columnas. Calcule la suma de los elementos de la diagonal principal de Z. Calcule la suma de los elementos de la diagonal secundaria de Z. Imprima las sumas calculadas.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 12

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda


43. Elabore un algoritmo que dada una matriz de N filas por N columnas que debe ser leda. Ordene los elementos de esa matriz de mayor a menor. Los elementos deben quedar en forma descendente por filas dentro de la matriz.

44. La matriz identidad es una matriz cuadrada en la cual los elementos de la diagonal principal tienen valor igual a uno (1) y todos los dems elementos son iguales a cero (0). Por ejemplo la matriz identidad de orden es: 1 0 0 0 0 1 0 0 1

45. Cualquiera matriz cuadrada de orden N puede aumentarse por medio de una matriz identidad , del mismo orden, colocada a su derecha., por ejemplo, si la matriz dada es: 1 5 3 7

y la matriz identidad del mismo orden es: 1 0 0 1

entonces la matriz aumentada es: 1 3 1 0 5 7 0 1

Elabore un algoritmo que lea una matriz cuadrada de orden N(N<7) e imprima la matriz leda, la matriz identidad del mismo orden y la matriz aumentada.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 13

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda

46. N trabajadores de la construccin laboran durante M das en cierta obra. Al final de cada jornada, a cada hombre se le guarda, en un registro que contiene el cdigo del trabajador, el numero de horas trabajadas durante la jornada. Al terminar la obra se tendr la siguiente informacin:
Codigo del Trabajador 120 128 221 300 Codigo N Da 1 8:50 8.00 7:30 8:00 10:00 Da 2 9:00 9.50 8:30 8:00 5:00 Da 3 7:30 7.00 9:40 7:00 6:50 Da M 8:00 9.00 7:20 7:30 8:20

Disee un algoritmo que lea los datos anteriores teniendo en cuenta lo siguiente: Los nmeros de identificacin (cdigos) se almacenaran en un vector y las horas laboradas en una matriz, donde en su orden respectivo, a cada elemento del arreglo corresponde una fila de la matriz. El algoritmo debe calcular e imprimir lo siguiente: El total de horas trabajadas por cada hombre. El total de horas trabajadas por todos los hombres en toda la obra. El total de horas trabajadas en cada jornada. El cdigo del trabajador que ms horas labor y el nmero del da en que ms horas labor dicho trabajador.

47. Para automatizar el proceso de elecciones de gobernador de un estado cualquiera, se debe elaborar un algoritmo que dependiendo del nmero de candidatos y del nmero de municipios se cuenten los votos y se den a conocer los resultados tomando en cuenta las siguientes especificaciones:

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 14

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Bsqueda


Se debe leer el nmero de candidatos a participar en las elecciones y el nmero de municipios en que se divide el estado. Se debe calcular e imprimir los totales de los votos recibidos por cada candidato y el porcentaje de votos emitidos, as mismo visualizar el candidato mas votado. Si algn candidato recibe ms del 50 % de los votos debe declararse como ganador. Si ningn candidato recibe ms del 50 % de los votos se debe imprimir el nombre de los candidatos ms votados que pasarn a la segunda vuelta. Se debe calcuar e imprimir el total de votantes por cada municipio y el total de votantes. Se debe tomar en cuenta una estructura similar a la siguiente para la elaboracin del algoritmo. Usar arreglos bidimensionales.

DISTRITO

CANDIDATO1

CANDIDATO2

CANDIDATO3

TOTAL DISTRITO 300 700 320 TOTAL DE VOTOS: 1320

1 2 3 TOTAL CANDIDATO

150 300 100 550

100 50 120 270

50 350 100 500

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 15

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad


1. Escribir un programa, que por medio de funciones, permita llenar una matriz cuadrada de ceros, excepto la diagonal principal que debe llenarse con 1.

2. Escribir un programa mediante funciones que realice las siguientes tareas: i. Devolver el valor del da de la semana en respuesta a la entrada de la letra inicial (mayscula o minscula) de dicho da. ii. Determinar el nmero de das de un mes y ao dados.

3. Escribir un programa que lea una cadena de hasta diez caracteres que representa a un nmero en numeracin romana e imprima el formato del nmero romano y su equivalente en numeracin arbiga.

4. Escriba una funcin que calcule cuntos puntos de coordenadas enteras existen dentro de un tringulo del que se conocen las coordenadas de sus tres vrtices.

5. Escribir un programa en base a funciones, que solicite del usuario un carcter y que site ese carcter en el centro de la pantalla. A continuacin, el usuario debe poder desplazar el carcter pulsando las letras A (arriba), B (abajo), I (izquierda), D (derecha) y F (fin) para terminar.

6. En un tablero de ajedrez, la reina puede atacar cualquier pieza que est en la misma fila, columna o diagonal que ella. El problema de las n reinas es posicionar n reinas en un tablero de n*m, de modo que ninguna reina pueda atacar a ninguna otra. Escribir un

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 16

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad


programa, que por medio de funciones, resuelva este problema y permita visualizar el resultado por pantalla.

7. Escribir un programa, que por medio del uso de funciones, permita visualizar el tringulo de Pascal con una altura dada por el usuario:

1 1 1 1 1 1 1 6 5 15 4 10 20 3 6 10 15 2 3 4 5 6 1 1 1 1 1 1

En el tringulo de Pascal, cada nmero es la suma de los dos nmeros situados encima de l.

10. Escriba un programa que use funciones y mens para trabajar con matrices. El programa debe sumar, restar y multiplicar dos matrices. El programa debe controlar las restricciones de los ndices de las matrices para las operaciones que lo requieran.

11. Realice un programa que permita calcular la inversa de una matriz.

12. Escribir un programa, haciendo uso de funciones, que visualice un calendario de la forma:

L 6 13 20 27

M 7 14 21 28

M 1 8 15 22 29

J 2 9 16 23 30

V 3 10 17 24

S 4 11 18 25

D 5 12 19 26

13. El usuario indica nicamente el mes y el ao. La frmula que permite conocer el da de la semana correspondiente a una fecha es:

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 17

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad


Meses de enero o febrero: n= a + 31 *(m-1) + d (a-1) div 4 3 * ((a+99) div 100) div 4; Restantes meses: n= a + 31 * (m-1) + d - (4*m + 23) div 10 + a div 4 - (3*(a div 100 + 1)) div 4;

Donde a=ao; m=mes; d=da; Nota: n mod 7 indica el da de la semana (1=lunes, 2= martes, etc.)

14. Realice un programa, el cual contenga una funcin que lea dos nmeros flotantes, y permita a travs de funciones; sumar los dos nmeros, restarlos y multiplicarlos. El usuario podr escoger la operacin que desee realizar luego de haber introducido los dos nmeros.

15. Realice un programa en C, el cual calcule el rea de un rectngulo, sabiendo que la frmula para calcular dicha rea es la siguiente:

rea del rectngulo = Base*Altura

16. Escribir un programa, que por medio de funciones, permita leer 3 nmeros enteros y los imprima de forma ascendente.

17. Realice un programa que determine el mayor de 3 nmeros enteros. Debe emplear funciones. (Las comparaciones deben estar dentro de una funcin) 18. Escribir un programa que contenga una funcin que reciba como parmetro un nmero y devuelva como resultado un valor de tipo lgico que indique si el nmero es o no par.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 18

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad


19. Escribir un programa que contenga una funcin que reciba como parmetro dos nmeros y devuelva como resultado un valor de tipo lgico que indique si el primer nmero es mltiplo del segundo.

20. Escribir un programa que contenga una funcin que reciba los valores de x y n como parmetros de entrada y devuelva el valor de x a la n como salida. 21. Escribir un programa que contenga una funcin que imprima la pirmide

1 121 12321 1234321


La declaracin de la funcin ser la siguiente: void piramide (int niveles) Siendo niveles el numero de filas de la pirmide

22. Escribir un programa que contenga una funcin de nombre Siguiente tal que, recibiendo un nmero primo mayor que uno, devuelva el numero primo inmediatamente siguiente y superior a dicho numero primo. Por ejemplo, si se invoca siguiente (7), la funcin devolver el numero 11.

23. Escribir un programa que contenga una funcin que reciba como parmetros las dos coordenadas cartesianas (x, y) de un punto del plano y devuelva como resultado un numero del 1 al 4 que indique el cuadrante al cual pertenece al punto (no considere los ejes de coordenadas). 24. Escribir un programa que contenga una funcin que reciba como parmetros de entrada dos instantes de tiempo expresados en horas, minutos y segundos y devuelva como resultado un 1 o un 2

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 19

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad


segn el primer instante de tiempo sea anterior al segundo o viceversa 25. Escribir un programa que contenga una funcin void maxmin (int x1, int x2, Pint max, Pint min); que reciba como parmetros de entrada dos numeros enteros x1 y x2 y devuelva a travs de los parmetros de salida max y min el mximo y el mnimo, respectivamente, de ambos nmeros.

26. Modificar la funcin anterior para que calcule tambin el valor medio de ambos nmeros. El nuevo prototipo de la funcin ser ahora el siguiente: void maxmin (int x1, int x2, Pint max, Pint min, Pint media);

27. Escribir un programa que contenga una funcin cuyo prototipo es: bool esLetra (char c); que reciba como parmetro de entrada un carcter y devuelva un valor lgico true si dicho carcter es una letra del alfabeto, y false en caso contrario.

28. Las resistencias electrnicas suelen ir identificadas por un cdigo de colores que permite marcar cada resistencia con su valor (en Ohmios, W) y su Tolerancia (en %). Este cdigo de colores viene representado en la siguiente tabla:

Dgito

Color Ninguno Plata Oro

Multiplicador

Tolerancia 20%

0.01 0.1 1 10 102 103 104 105

10% 5%

0 1 2 3 4 5

Negro Marrn Rojo Naranja Amarillo Verde

2%

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 20

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad


6 7 8 9 Azul Violeta Gris Blanco 106 107

El cdigo que suele emplearse en las resistencias es un cdigo de 4 colores, es decir, cada resistencia est marcada con 4 bandas y cada una de ellas puede ser de diferente color. Cada banda tiene un significado, que depende de cada color: Las primeras 2 bandas indican un nmero de 2 dgitos: Esos dos dgitos vienen dados por el color de esas bandas, segn la columna "Dgito" de la tabla, La tercera banda es un valor por el que se multiplicar el nmero obtenido por las bandas anteriores. Una vez multiplicados ambos valores, obtenemos el valor de la resistencia en Ohmios (W). La cuarta banda indica la tolerancia de la resistencia y, como puede verse en la tabla, no puede ser de cualquier color.

Ejemplo: Unas resistencias con los siguientes colores, tienen los siguientes valores de resistencia y tolerancia: Verde-Azul-Amarillo-Oro 560kW, 5% Rojo-Negro-Rojo-Rojo 2kW, 2% Rojo-Rojo-Marrn-Plata 220W, 10%

Segn todo lo anterior: Implemente una funcin que permita calcular la resistencia y la tolerancia de una resistencia, sabiendo los cdigos de colores. El subprograma tendr, como mnimo, 4 argumentos, que sern nmeros naturales, y que indicarn el color de las bandas segn la columna "Dgito". Los colores Oro, Plata y Ninguno tomarn los valores 10, 11 y 12 respectivamente. Implementar una funcin que muestre por pantalla el dgito que le corresponde a cada color (incluyendo los dgitos 10, 11 y 12).

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 21

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Implementar tambin un programa que pida los colores de las 4 bandas y muestre los valores devueltos por la anterior funcin. El programa mostrar el dgito que le corresponde a cada color usando el procedimiento ya creado y leer de teclado 4 nmeros que correspondern a los colores de las 4 bandas. Tras esta lectura mostrar los datos de la resistencia con esos colores en las bandas. El programa se repetir indefinidamente hasta que lea un valor negativo como color de una banda.

29. Hacer una funcin sin argumentos que cada vez que se llame Fibb devuelva el siguiente valor de la sucesin de Fibonacci. O sea, la primera vez que se llame devolver 0, la siguiente 1 y a partir de la tercera llamada devolver la suma de los dos valores anteriores: 1, 2, 3, 5, 8, 13, 21, 34... La funcin devolver datos de tipo unsigned long int. Hasta qu trmino es posible calcular sin que se produzca desbordamiento?. Intente modificar la funcin para que posibilite llegar a un trmino mayor utilizando datos de tipo long double.

30. Calendario Perpetuo: Este ejercicio por objetivo averiguar el da de la semana del 1 de Enero de cualquier ao posterior a 1582. Basndose en ese ejercicio hacer un programa que muestre en pantalla el calendario de un mes y ao elegido por el usuario del programa. El programa mostrar el calendario del mes elegido de forma tradicional, es decir, en 7 columnas, una para cada da de la semana y teniendo en cuenta el nmero de das de cada mes, prestando especial cuidado con el mes de Febrero por si es ao bisiesto. El programa deber remarcar de alguna forma los das festivos: Todos Domingos y algunas fiestas especiales 28 de Febrero (da de Andaluca), 1 de Mayo (da del trabajo), 12 de Octubre (da de la Hispanidad, Virgen del Pilar), 6 y 8 de Diciembre (da de la

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 22

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad


Constitucin y de la Inmaculada), 25 de Diciembre (Navidad)... y tambin el Jueves y el Viernes Santo.

31. Mximo Multiplicador Cabalstico: Hay nmeros naturales que al multiplicarlos sucesivamente por 1, 2, 3, 4... se obtienen nmeros que tienen los mismos dgitos que el original pero en distinto orden (slo al multiplicar por 1 se obtiene un nmero con los mismos dgitos en el mismo orden). Supongamos que para el nmero N, se cumple esa propiedad al multiplicarlo por 1, 2, 3..., X. Es decir, si yo multiplico N por cualquier nmero del intervalo [1,X], el resultado ser un nmero con los mismos dgitos que N, pero en distinto orden. Entonces, decimos que el "mximo multiplicador cabalstico" de N es X: MMC(N)=X. Ejemplo: MMC(142857) = 6; Por ejemplo,

142857*5=714285. Para el nmero 142857 la propiedad se cumple, adems de para el nmero 5, tambin para cualquier nmero del intervalo [1,6]. Hacer un programa que muestre (usando funciones independientes): La mayor lista de nmeros posible, en la que todos cumplen que MMC(N) es mayor o igual a 2. Al final debe mostrar el N cuyo valor MMC(N) es el mayor de todos los nmeros analizados. Dado un nmero N, mostrar su valor MMC(N).

32. Dividir calculando periodos: Implementar un programa para dividir dos nmeros de tipo long double. El resultado debe tener hasta 10 decimales, redondeando este ltimo segn el undcimo decimal. El programa debe detectar e indicar si entre los 10 primeros decimales se produce algn periodo (puro o mixto). El Men contendr las opciones "Cambiar dividendo: X" (donde X es el ltimo dividendo introducido), "Cambiar divisor: Y" (donde Y es el ltimo divisor introducido) y "Calcular divisin". Por defecto, al principio del

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 23

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad


programa se debe suponer un valor cualquiera para el dividendo y el divisor. Ejemplos: 12/9 = 1.3 con 3 como periodo (1.3333333333...). 12/7 = 1.714285 con 714285 como periodo (1. 714285714285714285...). 13/6 = 2.16 con 6 como periodo (2.166666666...).Compruebe que el divisor no sea nunca cero. Para efectuar diversas divisiones cambiando slo el divisor bastar con usar la segunda y tercera opciones sucesivamente, ya que el dividendo permanecer constante mientras no se cambie usando la primera opcin. Para calcular los periodos se pueden calcular los restos obtenidos al sacar decimales en la divisin y, en cada resto comprobar si ese resto ya se ha repetido anteriormente, en cuyo caso tenemos un periodo a partir de ese dgito.

33. Quizs el ms famoso de todos los sistemas de codificacin es el cdigo Morse, desarrollado por Samuel Morse en 1832, para uso en el sistema telegrfico. El cdigo Morse asigna una serie de puntos y rayas a cada letra del alfabeto, a cada dgito y a unos cuantos caracteres especiales. La separacin entre palabras se indica por un espacio o por la ausencia de un punto o una raya. La versin internacional del cdigo Morse aparece en la tabla siguiente:

Carcter A B C D E F G H I

Cdigo

Carcter T U V W X Y Z

Cdigo

.-... -.-. -.. . ..-. --. .... ..

......--..-.---..

Nmeros

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 24

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad


J K L M N O P Q R S

.---..-.. --. --.--. --..-. ...

1 2 3 4 5 6 7 8 9 0

.---..--...-......... -.... --... ---. ----. -----

Escriba un programa que lea una frase escrita en espaol y cifre dicha frase en cdigo Morse y que tambin lea una frase en cdigo Morse y la convierta en el equivalente en espaol. Utilice un espacio en blanco entre cada letra codificada Morse y tres espacios en blanco entre cada palabra codificada en Morse. El programa deber incorporar una funcin Menu() que muestre las siguientes opciones: 1) Pasar una frase a cdigo Morse, lo cual se implementar en una funcin que se llame Frase2Morse(), 2) Pasar cdigo Morse a una frase, implementando una funcin que se llame Morse2Frase() y 3) Salir.

USANDO RECURSIVIDAD:

34. Calcular el mximo comn divisor de una lista de nmeros enteros. El mximo comn divisor es el mayor nmero entero que divide (divisin exacta) a todos los elementos de la lista. Se introducirn tantos nmeros como lo desee el usuario. 35. Elevar un entero positivo a una potencia entera positiva. La base y el exponente deben ser valores enteros positivos. 36. Calcular la sumatoria de los elementos de un arreglo.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 25

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad


37. Imprimir los elementos de un arreglo.

38. Determinar si una cadena, introducida por teclado, es un palndromo. 39. Realizar una bsqueda de un elemento en un arreglo a travs de bsqueda binaria.

40. Imprimir en reversa una cadena introducida por el teclado. Mximo de 60 caracteres ms el carcter nulo.

41. Ordenar un arreglo a travs del mtodo de seleccin.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 26

Objetivo 3.- Ejercicios Propuestos de Punteros o Apuntadores


1. Escribir una funcin que determine si una cadena de caracteres recibida como parmetro est vaca o no

2. Escribir una funcin que reciba como argumento un arreglo de caracteres y lo devuelva invertido por pantalla

3. Escribir una funcin que reciba una cadena de caracteres "s" y un arreglo de caracteres con espacio suficiente "t", y copie la cadena en el arreglo, terminando la cadena con el caracter '\0' (Funcin strcpy() de la biblioteca <string.h>).

4. Escribir una funcin que reciba como argumento dos cadenas de caracteres, y realice la concatenacin de una sobre la otra, terminando la cadena con el caracter '\0' (Funcin strcat() de la biblioteca <string.h>).

5. Escribir una funcin que reciba dos cadenas de caracteres como argumentos, realice una comparacin lexicogrfica de las mismas, y retorne por el nombre valores positivos, cero y negativos, segn corresponda. (Funcin strcmp() de la biblioteca <string.h>).

6. Escribir una funcin que dadas dos cadenas de caracteres y un nmero "n" entero recibidos como parmetros, compare

lexicogrficamente los primeros "n" caracteres, devolviendo un valor positivo, cero o negativo, segn corresponda. (Funcin strncmp() de la biblioteca <string.h>).

7. Escribir una funcin que reciba una cadena de caracteres, un arreglo de caracteres con espacio suficiente, y una variable entera "n", y copie los primeros "n" caracteres de la cadena sobre el arreglo,

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 27

Objetivo 3.- Ejercicios Propuestos de Punteros o Apuntadores


sin terminar la cadena con el carcter nulo. (Funcin strncpy() de la biblioteca <string.h>).

8. Escribir una funcin que convierta a minsculas una cadena de caracteres recibida como argumento.

9. Escribir una funcin que convierta a maysculas una cadena de caracteres recibida como argumento.

10. Escribir una funcin que reciba una cadena de caracteres como argumento, y la convierta a minsculas o maysculas, de acuerdo a una opcin ingresada por el usuario a travs del parmetro "format", cuyo tipo es case, un tipo enumerativo compuesto por los tokens UPPERCASE y LOWERCASE:

11. Escribir una funcin que responda al siguiente prototipo: void replace (char *s, char nuevo, char viejo) ; y reemplace en la cadena "s" todas las apariciones del carcter "viejo" por el carcter "nuevo".

12. Escribir una funcin que reciba como parmetro una cadena de caracteres que comienza con espacios en blanco, y los elimine desplazando los caracteres tiles hacia la izquierda. (operacin "lefttrim").

13. Escribir una funcin que reciba como parmetro una cadena de caracteres que finaliza con espacios en blanco, y los elimine desplazando los caracteres tiles hacia la izquierda. (operacin "right-trim").

14. Escribir una funcin que reciba dos cadenas de caracteres denominadas "s1" y "s2" respectivamente, y verifique la existencia de

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 28

Objetivo 3.- Ejercicios Propuestos de Punteros o Apuntadores


la cadena s2 como subcadena integrante de la s1, retornando un token del tipo enumerativo int por el nombre de la funcin (ver funcin strstr() de la biblioteca <string.h>).

15. Escribir una funcin que reciba una cadena de caracteres y determine si es un palndromo o no, retornando el resultado por el nombre. Considerar el caso de longitudes de cadena par e impar.

16. Escribir una funcin que reciba una matriz cuadrada de enteros y su dimensin, y determine si es una matriz es simtrica o no, retornando el resultado por el nombre.

17. Escribir una funcin que reciba una matriz cuadrada de doubles y su dimensin, y retorne el valor de su determinante.

18. Escribir una funcin que calcule las partes entera y decimal de cualquier nmero real recibido como argumento, y las retorne por pantalla. 19. Escribir una funcin que convierta un nmero que representa una cantidad de segundos, a su equivalente en horas, minutos y segundos, retornando las partes por pantalla.

20. Escribir una funcin que recibe las coordenadas rectangulares de dos puntos del plano y calcule la distancia entre ellos.

21. Crear un programa que calcule el valor de la intensidad que pasa a travs de una resistencia dada, cuando se le aplica un voltaje determinado. El programa deber estar dividido en las siguientes funciones:

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 29

Objetivo 3.- Ejercicios Propuestos de Punteros o Apuntadores


explicar_programa (): Esta funcin mostrar una introduccin del programa por la pantalla. obtener_valores (): Esta funcin pedir los valores para la resistencia y voltaje los cuales se pasarn por referencia al programa principal. calcular (): Esta funcin efectuar el clculo de la intensidad a partir de la resistencia y el voltaje aplicado. imprimir_respuesta (): Esta funcin se encargar de mostrar un mensaje con los resultados.

22. Crear una funcin que intercambie el contenido de dos variables. Para ello se pasarn como parmetros las direcciones de las variables. Para probar la funcin escribir un programa que pida los datos por pantalla y muestre los contenidos despus de llamar a la funcin.

23. Crear un programa que lea un nmero determinado (<100) de nmeros reales introducidos por teclado los almacene en un vector para mostrarlos luego en orden inverso. Nota: Para recorrer el array se deber usar aritmtica de punteros en lugar de usar los ndices del array.

24. Escribir una funcin que tras pedir un da de la semana (de 1 a 7) devuelva un puntero a cadena con el nombre del da. La funcin contendr un array de apuntadores a cadena. Para probar la funcin se realizar un programa que pida un da de la semana en nmero y escriba el da de la semana en letra.

25. Escribir un programa que inicialice una cadena con una palabra cualquiera. El programa deber obtener la direccin de la primera letra de la cadena. Una vez sabida esta direccin la mostrar por pantalla y realizar un bucle dando 3 oportunidades para que el

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 30

Objetivo 3.- Ejercicios Propuestos de Punteros o Apuntadores


usuario introduzca la direccin de la tercera letra de la cadena. En caso de no introducirla bien despus de los 3 intentos, deber sacar un mensaje indicando cul es la direccin correcta.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 31

Objetivo 4.- Ejercicios Propuestos de Estructuras


1. Una empresa dedicada a la venta de discos compactos (CD) desea almacenar los datos de una coleccin de CD de msica, con el propsito de llevar su inventario y obtener informacin rpida de ellos. Se requiere que usted realice un programa en C, que disee una estructura llamada CD que contenga los siguientes miembros (campos): Nombre del Miembro Ttulo Artista Nmero de canciones Cantidad de CD Precio Tipo de Dato Arreglo de caracteres de tamao 30 Arreglo de caracteres de tamao 25 Entero. Entero. Coma flotante

Tomando en cuenta la informacin anterior realice lo siguiente: Cree un arreglo unidimensional (vector) de 100 estructuras, Disee la funcin void incluir_cd (struct cd arreglo_cd[100]) que permita ingresar los datos de los CD en el arreglo. Disee la funcin void listar_cd (struct cd arreglo_cd[100]) que permita mostrar todos los datos de los CD contenidos en el arreglo. Disee la funcin void vender_cd (struct cd arreglo_cd[100]) que permita vender uno o varios CD siempre y cuando haya disponibilidad. (cantidad de CD >0). Se debe validar que exista el CD en el arreglo antes de venderlo. Dado el nombre de un artista, mostrar los CD relacionados con dicho artista. Listar los CD con un nmero de canciones mayor o igual a 15. Mostrar la cantidad total en Bs. invertida en la compra de todos los CD guardados en el arreglo.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 32

Objetivo 4.- Ejercicios Propuestos de Estructuras


2. Se desea que usted almacene M llamadas telefnicas. De cada llamada se almacenan los siguientes datos: cdigo de rea, nmero marcado, duracin, fecha y destino; adems por razones de operaciones se quiere que la fecha contenga: hora, minutos, segundos, da, mes y ao en que fue realizada. Se requiere el siguiente reporte: Nmero de llamadas realizadas en el mes de febrero del ao 2010. Sabiendo que el costo por minuto de llamadas locales es de 0,03 BF. Indicar el total a pagar por llamadas locales. Mostrar todos los datos de las llamadas realizadas a la ciudad de Caracas. 3. En un colegio la informacin de la comunidad es guardada en un arreglo, llamado COLEGIO, cuyos componentes son del tipo PERSONAL. Los datos del personal son: nombre, apellido, edad, direccin y otros datos que dependen de si la persona es profesor o alumno. En el caso de un profesor se almacena la categora ( fijo o contratado), el salario y el turno; para los alumnos se almacena el curso, la seccin y la nota promedio. Calcule el nmero de alumnos y profesores del Colegio. Liste el nombre, apellido, edad y promedio de todos los alumnos de la seccin dos de cuarto ao. Liste nombre, apellido, direccin contratados con salario >= 1500 BF y turno de los profesores

4. En una librera tienen la necesidad de automatizar el manejo de la informacin de los libros que estn a la venta, por lo que se solicita a usted hacer un programa en C, que genere una estructura de datos que contemple la siguiente informacin: Cota del libro.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 33

Objetivo 4.- Ejercicios Propuestos de Estructuras


Nombre del libro. Nombre del autor. Nombre de la editorial. Fecha de edicin. (Hacer otra estructura llamada fecha: da, mes y ao) Precio.

Ahora se requiere que construya un men que incorpore adems de la opcin Salir las siguientes funciones: Leer_Libro: que permitir ingresar los datos del libro. Tenga en cuenta que la cota del libro no debe repetirse. Mostrar_Libros: permitir mostrar todos los libros ingresados. Buscar_Libro: dada la cota de un libro en particular, mostrar sus datos. Si la cota no existe se le debe indicar al usuario a travs de un mensaje Listar_Autor: muestra una lista de libros segn un autor solicitado. Si el autor no est registrado se le debe indicar al usuario a travs de un mensaje.

5. En el hospital Antonio Patricio de Alcal se realiza actualmente un seguimiento de los pacientes que han ingresado al hospital por las enfermedades infectocontagiosa: Paludismo, y Fiebre amarilla. Desarrolle un programa que permita registrar y administrar los datos necesarios para este estudio. El programa que muestre un men con las opciones de: 1. Registrar Paciente, 2. Buscar Paciente, 3. Reporte por enfermedad, 4. Salir. Se debe incorporar las siguientes funciones: Ingresar_Registro: que permitir ingresar los datos del paciente atendido. Por cada paciente se debe registrar: Cedula, nombre, sexo, telfono, direccin y tipo de enfermedad. Se debe validar que solo se ingrese los tipos de enfermedad en

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 34

Objetivo 4.- Ejercicios Propuestos de Estructuras


estudio (Paludismo y Fiebre Amarilla) y que la Cdula del paciente no se repita. Buscar_Paciente: dada la cdula de identidad de un paciente, mostrar sus datos. Reporte_Enfermedad: que muestre las personas atendidas por cada enfermedad (el reporte debe contener cedula y nombre), este reporte debe mostrar el total de personas atendidas por enfermedad.

6. Realizar un programa en C, que simule una Agenda, donde se construya un men con las siguientes funciones: Registrar_Contacto: donde se registrar los datos de una persona (nombre, Apellidos, direccin, telfono, email). Tenga en cuenta que la agenda solo tiene capacidad para 50 contactos. Buscar_Contacto: dado el nombre de un contacto se debe mostrar sus datos. Listar_Contactos: mostrar todos los contactos de la agenda. Modificar_Contacto: dado el nombre del usuario, mostrar sus datos y preguntar si realmente desea modificarlo, de ser as solicitar nuevamente los datos, sino volver al men sin hacer ningn cambio. Eliminar_Contacto: dado el nombre del usuario, mostrar sus datos y preguntar si realmente desea eliminarlo, de ser as eliminar el contacto, sino volver al men sin hacer ningn cambio. Se debe salir del programa slo por la opcin Salir del men.

Nota: Para eliminar el contacto puede agregar en la estructura un campo llamado Marca, cuando dicho campo sea igual a 0, el contacto se

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 35

Objetivo 4.- Ejercicios Propuestos de Estructuras


considerar activo, sino si el campo Marca es igual a 1, entonces el contacto estar eliminado.

7. En una lnea de autobuses tienen la necesidad de automatizar la venta de boletos, por lo que se solicita a usted hacer un programa en C, que genere una estructura de datos que contemple la siguiente informacin: Nmero de la Unidad Nombre del Chofer Destino Nmero total de boletos Precio del boleto Nmero del boleto vendido. (No debe ser mayor que el Nmero total de boletos) Fecha de Salida (Hacer otra estructura llamada fecha: da, mes y ao)

Ahora se requiere que construya un men que incorpore adems de la opcin Salir las siguientes funciones:

Registrar_Boletos: El programa registrar los boletos por unidad. Para ello se solicitar: Nm. de la Unidad, nombre del chofer, destino al que viajar la unidad, nmero total de boletos disponibles, precio del boleto.

Venta_Boletos: Funcin que permite vender un boleto. Para ello, se solicitar el destino del cliente, si existe, verificar si hay boletos disponibles para ese destino, de haber disponibilidad se solicitar la fecha de salida de la unidad y el nmero del boleto a vender. Adems, se debe decrementar el Nmero total de boletos. Por ltimo se debe mostrar por pantalla los datos del boleto vendido.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 36

Objetivo 4.- Ejercicios Propuestos de Estructuras


Cierre_Venta: Esta funcin simula el cierre de las ventas, mostrando por pantalla un informe con: Nmero de la unidad, nombre del chofer, destino, nmero de boletos vendidos, nmero de boletos restantes, monto total en Bs.F. por los boletos vendidos en todas las unidades. 8. Una aplicacin informtica de un centro universitario dispone de la siguiente informacin sobre una carrera:

Por cada asignatura: a) cdula del profesor que la imparte; b) cdigo de asignatura (nico); c) nombre de la asignatura; d) semestre; e) crditos;

Por cada profesor: a) cdula; b) nombre del profesor; c) fecha de ingreso al instituto; d) fecha de nacimiento; e) dedicacin (exclusiva, tiempo completo y medio tiempo).

Teniendo en cuenta que un profesor puede impartir ms de una asignatura, disear las estructuras de datos apropiadas y los siguientes subprogramas: ProfesorAsignatura. A partir de la(s) estructura(s) de datos adecuada y el cdigo de la asignatura, obtener el nombre del profesor que imparte la asignatura si existe la asignatura y el profesor. SueldoMedioAnual. A partir de la(s) estructura(s) de datos adecuada calcula el sueldo promedio al ao de los profesores del instituto. El sueldo base anual depende de la dedicacin: a) Exclusiva: 2000 Bsf, b) Tiempo Completo: 1500 Bsf y c) Medio Tiempo: 1000 Bsf

Hay que tener en cuenta que si el profesor es dedicacin exclusiva el sueldo incluye un complemento que se calcula en funcin del nmero de aos que el profesor ha trabajado en la institucin, cobrando 150 Bsf mensuales por cada cinco aos completos trabajados. Si el profesor es

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 37

Objetivo 4.- Ejercicios Propuestos de Estructuras


tiempo completo o medio tiempo el sueldo no incluir el complemento de quinquenios. 9. Se requiere simular un Sistema de Reservacin de Boletos en una compaa area, diseando un programa que se ocupe de las transacciones de los pasajeros de un vuelo. Para ello, se debe mostrar un Men donde las opciones sean las siguientes: 1. Registrar Vuelos. 2. Reservar Boleto. 3. Confirmar Reserva de Boleto. 4. Cancelar Reserva de Boleto. 5. Consultar Disponibilidad de un Vuelo. 6. Listado de Pasajeros. 7. Salir del Sistema. Para cada opcin se debe Considerar lo siguiente: Opcin 1. De los vuelos se conoce: Nmero de vuelo, Nmero mximo de pasajeros, Nombre del piloto, Destino, Fecha de salida. La empresa solo tiene capacidad para 3 vuelos. Opcin 2. De la transaccin con los pasajeros se conoce: Nmero de vuelo reservado, Cdula, Nombre y Apellido del pasajero, Estado de la transaccin (Reservado, Confirmado o Cancelado). Cuando llega una solicitud de reservacin, el pasajero es agregado en un arreglo de estructuras llamado Reservaciones, con un Estado inicial de reservado, siempre y cuando haya disponibilidad en el vuelo solicitado. Opcin 3. Si llega una confirmacin del pasaje, la accin a tomar (suponiendo que esta persona est en el arreglo de reservaciones) confirmado. Opcin 4. Si el pasajero cancela el pasaje, la accin a tomar ser cambiar el estado de reservado a Cancelado. es cambiar el estado de reservado a

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 38

Objetivo 4.- Ejercicios Propuestos de Estructuras


Opcin 5. Mostrar para un vuelo en particular, la cantidad de puestos disponibles. Opcin 6. Dado un Nmero de vuelo, mostrar sus datos, adems el listado de pasajeros con reservaciones

confirmadas para dicho vuelo.

10. La Academia Local Cisco System de la ciudad de Cuman, requiere desarrollar un programa para el registro y consulta de las notas de los estudiantes que all realizan su Curso de Especializacin en Redes. Se debe mostrar el siguiente men: a. Registrar Calificaciones b. Consultar Calificaciones c. Mostrar Listado de Promedios d. Mostrar Listado por Mdulos e. Salir del Sistema Para cada opcin se debe tener en cuenta lo siguiente: Opcin a: registrar los siguientes datos: Cdula, Nombre y Apellidos del estudiante y las calificaciones correspondientes a cada uno de los cuatro Mdulos all cursados. Es importante mencionar, que se tienen 20 Estudiantes. Opcin b: Dada la Cdula de un estudiante, se desea conocer los datos y calificaciones del mismo. Opcin c: Mostrar un listado con los nombres y el promedio de notas de cada estudiante. Al final del Listado se deber mostrar promedio general del curso. Opcin d: Dado el nmero de un mdulo, se desea mostrar los estudiantes que aprobaron dicho mdulo.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 39

Objetivo 5.- Ejercicios Propuestos de Archivos


Archivos de Texto

1. Desarrolle un programa que permita: abrir un archivo, leer su contenido y mostrarlo por pantalla, y cerrar el archivo.

2. Desarrolle un programa que acepte como argumento de la lnea de comando el nombre de un archivo, y determinar si existe o no en el directorio actual.

3. Desarrollar un programa que permita leer el contenido de un archivo y realice la siguiente estadistica: cuente el total de lineas, numero de vocales, numero de consonantes, y la cantidad de numeros.

4. Desarrolle un programa que dada un texto lo escriba en un archivo.

5. Realice un programa que dado una frase, la busque dentro de un archivo e indique el nmero de veces que esta aparece.

6. El comando cp del sistema operativo linux, permite realizar una copia de un archivo. La estructura basica del comando es: >$cp

archivo_original.txt archivo_copia.txt

7. Se requiere de usted crear un programa que dado un archivo cree una copia del mismo.

8. Desarrolle un programa que permita almacenar en un archivo un texto de longitud variada. Este programa debe estar en la capacidad de extraer las vocales del texto almacenado en el archivo y enviarlas a un archivo vocal.txt la lnea final del archivo debe contener el numero total de vocales almacenadas, en otro archivo se deben colocar los

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 40

Objetivo 5.- Ejercicios Propuestos de Archivos


nmeros existentes en el texto y en la lnea final debe colocar la

cantidad nmeros. Debe haber un tercer archivo en en el cual se almacene el total de caracteres del archivo original y el total de lneas del archivo original.

9. Uno de los sistemas de encriptacin muy usados en el pasado, fue el mtodo del desplazamiento, el cual consiste en hacer corresponder a cada letra del alfabeto otra letra de acuerdo a un valor dado denominado desplazamiento. Un Ejemplo de este mtodo es el siguiente: Mensaje original: HOLA MUNDO Si el desplazamiento es K=4, este mensaje se transforma en: Mensaje Cifrado: LSPERYQHS

10. Disee un programa que permita leer el contenido de un archivo y lo cifre, almacenando el texto cifrado en un archivo llamado cifa.txt.

Archivos Binarios

11. El Gerente del Hotel Bahia Azul ubicado en la ciudad de cuman, ha planteado una situacin particular en su empresa. Los registros de los clientes que ingresan al hotel son almacenados manualmente en carpetas lo cual esta generando problemas para acceder a los datos. Este lo ha seleccionado a usted como analista programador le solvente esta situacin atendiendo los requerimientos que plantea. Desea un programa que permita registrar las entradas y salida de los clientes del hotel, as como tambin un reporte con los datos de los clientes VIP y clientes corrientes (los clientes VIP son aquellos cuyo consumo es superior a 1 000 000 de Bs), Por cada cliente que ingresa se almacena Nombre, monto y habitacin reservada.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 41

Objetivo 5.- Ejercicios Propuestos de Archivos


12. En el hospital Antonio Patricio de Alcal se realiza actualmente un seguimiento de los pacientes que han ingresado al hospital por las enfermedades infectocontagiosa: Dengue clsico, Dengue

Hemorrgico y A1HN1,. Desarrolle un programa que permita registrar y administrar los datos necesarios para este estudio. El programa debe incorporar las funciones de ingresar, y buscar un paciente. Debe tambin realizar un reporte que muestre las personas atendidas por cada enfermedad (el reporte debe contener cedula y nombre), este reporte debe mostrar el total de personas atendidas por enfermedad. Por cada paciente se debe registrar: Cedula, nombre, sexo, telfono y direccin.

13. La Academia Local Cisco System. Desea desarrollar un programa para el registro y control de los estudiantes que all realizan su curso de especializacin en Redes. Para realizar el control de los estudiantes se debe registrar los siguientes datos: Nombre, cedula, sexo, edad, y las calificaciones correspondientes a cada uno de los cuatro semestres all cursados. Usted como analista-programador debe realizar un programa que permita: Ingresar un estudiantes y sus notas (correspondiente a cada uno de los semestres), Determinar los alumnos con promedio mayor a 90 puntos(Se califica de 0 a 100) generar el reporte de alumnos sobresalientes(el reporte debe tener cedula, nombre, y promedio), Generar un reporte de todos los estudiantes del sistema escolar (Cedula y nombre), Determinar el promedio general de los estudiantes de la academia.

14. Disee un programa que permita controlar los datos de un conjunto de personas, este programa debe estar en la capacidad de: abrir o crear un archivo, dar de alta (ingresar) un elementos al archivo, dar de baja (eliminacin lgica y fsica) un elemento del archivo, modificar los datos de un elemento, buscar un elemento. Los datos a almacenar por cada

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 42

Objetivo 5.- Ejercicios Propuestos de Archivos


persona son: Cedula, nombre, edad. El programa debe tener un men que permita al usuario seleccionar la opcin deseada.

15. El messenger es un programa que permite a una persona comunicarse con otra a travs de un sistema de charla on-line. Este programa adems permite almacenar los datos de los contactos en un archivo tipo agenda. Desarrolle un programa que permita almacenar los datos de los contactos, mostrar los datos de un contacto particular, eliminar un contacto que ya no se quiera. Adems el programa permitir determinar el nmero de contactos en la agenda, el numero de contactos por cada grupo (Amigos, panas; novias(os), Familiares, Profesores), y generar un reporte con los datos de los contactos de un grupo especifico. Por cada contacto la agenda almacena los siguientes datos: Nombre, Nick (Alias), correo electrnico principal, correo electrnico secundario, direccin y telfono. La bsqueda de un contacto se puede realizar por su nombre, correo electrnico, o Nick.

16. 14) El concesionario de Autos usados El primero, lo ha contratado a usted como analista programador para que disee el sistema de control del parque automotor. La empresa requiere: totalizar el nmero de autos en el parque, un reporte por marca de autos y total, un reporte de los autos en el parque por ao de construccin, un reporte general de todos los autos. As como tambin desea conocer los autos que hasta una fecha dada (Mes y ao) tengan ms de 30 meses en el parque. Esta empresa distribuye tan solo autos de 3 fabricantes: Toyota, Ford, Chevrolet.

17. El Sistema escolar para adultos Revolucin en Amrica Latina, desea realizar un sistema para registro y control de los estudiantes que all se especializan. Para realizar el control de los estudiantes se debe registrar los siguientes datos: Nombre y apellido, cedula, sexo, edad. Cada

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 43

Objetivo 5.- Ejercicios Propuestos de Archivos


estudiante en este sistema cursa un mximo de cuatro Trimestres. Usted como analista-programador debe realizar un programa que permita: Ingresar un estudiantes y sus notas (correspondiente a cada uno de los trimestres), Determinar los alumnos con promedio mayor a 18 puntos y generar un reporte de alumnos sobresalientes(el reporte debe tener cedula, nombre, y promedio), Generar un reporte de todos los

estudiantes del sistema escolar (Cedula y nombre), Generar un reporte con los alumnos con promedio de calificaciones inferiores a 10 puntos, totalizar el promedio de edad de los estudiantes del sistema. Los datos de los estudiantes se almacenan en un registro llamado est.bin, y los datos correspondientes a sus calificaciones en otro denominado notas.bin.

Recopilado por: Docentes del rea de Programacin / Trayecto I / Trimestre II Unidad Curricular: Programacin I Pgina 44