ejercicios de programacion o asignaciones

44

Upload: brayan-garzon-martinez

Post on 26-Jul-2015

11.232 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Ejercicios de Programacion o Asignaciones
Page 2: Ejercicios de Programacion o Asignaciones

Profesores Colaboradores

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 2

Lcdo. Rubén Cova Lcdo. David Licet

Lcdo. Luis Rigual Lcdo. Gregorio Ruiz

Lcda. Rosemigd Mago Lcda. Nakary Ortega. MSc

Ing. Leonardo Malavé. MSc Lcdo. Aníbal Torres

Lcda. Lisblein Arismendi TSU Christian Hernández

TSU Osman Pineda TSU Edinson González

TSU Rodolfo Ortíz TSU Víctor Uzcategui

Page 3: Ejercicios de Programacion o Asignaciones

Índice

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 3

Página Objetivo 1.- Arreglos, Cadenas de Caracteres, Rutinas de

Ordenamiento y Rutinas de Búsqueda

4

Objetivo 2.- Funciones y Recursividad 16

Objetivo 3.- Punteros o Apuntadores 25

Objetivo 4.- Estructuras 32

Objetivo 5.- Archivos 40

Page 4: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 4

1. Elabore un programa en C que lea en una lista, una serie de

números enteros, calcule la media de los n números e indique

cuantos de los números dados son iguales a la media.

2. Escribir un programa que lea 5 números y los guarde en un arreglo,

luego pida un nuevo número e indique si este se encuentra dentro

del arreglo y en que posiciones

3. Escribir un programa que lea dos vectores de igual dimensión y

calcule el vector suma y el vector diferencia. Suponga que ambos

arreglos tienen dimensión 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 números pares y otro que contenga

los números 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

después del intercambio.

6. Escribir un programa que lea una lista de valores y construya dos

arreglos, uno con los que están dentro del intervalo (a, b), donde a y

b son números dados, y otro con los valores que estén 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. Diseñe un programa que lea una serie de nombres de un curso

determinado y sus respectivas notas, luego cree 2 arreglos solo con

Page 5: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 5

los nombres. Uno que contenga los nombres de los alumnos

aprobados y otro con los alumnos reprobados.

8. Una orquesta está formada por n músicos, escribir un programa que

lea dos vectores nombre y edad, para luego determinar cual de las

personas es más vieja y cual es más joven, se debe imprimir el

nombre de la persona con su respectiva edad.

9. Diseñe 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. Diseñe 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 intersección y la unión en

forma de conjunto. Se debe mostrar los dos arreglos originales, el

vector unión y el vector intersección.

12. Elabore un algoritmo que lea un arreglo de caracteres y determine si

la frase es un palíndromo, una palabra es palíndromo si se lee de

igual forma en ambos sentidos.

13. Elabore un programa que cargue un arreglo con 15 números de

cédulas, éstos no deben estar repetidos. Si la persona introduce un

número de cédula 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.

Page 6: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 6

14. Elabore un programa que permita realizar búsquedas en un vector

con los números de cédulas de 20 personas que pertenecen a la

empresa: ZTA C.A. Se van a hacer búsquedas hasta que el usuario lo

desee. Si la cédula a buscar no existe escribir el mensaje “persona

no pertenece a la empresa”. Al finalizar la búsqueda se debe

imprimir cuantas cédulas pertenecían a la empresa y cuantas fueron

búsquedas 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

número de zapatos vendidos por tres vendedores cada día de la

semana. Se deben calcular los totales vendidos por cada vendedor

durante la semana y los totales vendidos por día en la zapatería. Se

deben utilizar 4 arreglos adicionales para: almacenar los días 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 día.

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

Page 7: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 7

equipos de guerra (barcos, aviones y tanques) y destruírselos. El

jugador tiene 5 oportunidades para adivinar todo el armamento

enemigo. Cada armamento de guerra posee una puntuación:

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 posición (fila y

columna) donde desea realizar su disparo, si existe algún

armamento gana los puntos de dicho armamento, si no existen

armamentos se van acumulando sus fallos, hasta un máximo 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 envía un mensaje que PERDIÓ y se señalan 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 posición vacía, que representa un fallo en

el disparo.

Leyenda

Nombre Descripción Nombre Descripción

col Total de columnas fil Total de filas

campo Matriz que corresponde al campo

de batalla.

mat_pos Matriz de posiciones, señaladas

por el jugador.

ptobarcos Total puntos de barcos 300 totbarcos Total de barcos 3

ptotanques Total puntos de tanques 500 tottanques Total de tanques 2

ptoaviones Total puntos de aviones 100 totaviones Total de aviones 5

cantbarcos Cantidad de barcos descubiertos fallo Total de fallas del jugador

cantanques Cantidad tanques descubiertos maxfalla Máxima de fallas del jugador.

cantaviones Cantidad aviones descubiertos i Subíndice de las filas

totpuntos Total de puntos acumulados j Subíndice de las columnas.

gano Mensaje indicando que gano perdio Mensaje indicando que perdio

20. Elabore un algoritmo donde se realicen encuestas a las personas de

Cumaná; el encuestador realizará encuestas mientras lo desee o hasta

encuestar un máximo de 100 personas. A cada persona se le pregunta:

Page 8: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 8

nombre, cédula, edad y sexo. Los datos de entrada deben ser

validados. El encuestador debe chequear que no encueste a la misma

persona, buscando el número de cédula entre las personas ya

encuestadas. Si la cédula existe debe imprimir un mensaje indicando

“UD. YA FUE ENCUESTADO”. Las lista de encuestados debe ser cargada

insertando los valores ordenados (ascendente) por número de cédula.

Finalizada la encuesta elimine de la lista todas las personas mayores de

60 años y coloque, sólo, sus números de cédula en otro vector. Una vez

eliminados los mayores de 60 años, calcular e imprimir cuantas mujeres

son menores de 20 años, y el porcentaje de hombres con edad

comprendida entre 30 y 40 años con respecto al total de encuestados.

Imprima la lista de encuestados y la lista de los números de cédulas de

personas mayores de sesenta años.

Leyenda

Nombre Descripción Nombre Descripción

tam Tamaño máximo del vector i Subíndice de la lista

t_enc Total encuestados j Subíndice de eliminación

sexo_p Sexo persona encuestada k Subíndice de cedulas eliminadas

nombre_p Nombre persona encuestada vcedula Vector de cedulas

cedula_p Cédula de persona encuestada vnombre Vector de nombres

mensaje Mensaje “ya fue encuestado” vsexo Vector de sexo

repetida Switch que indica si la cedula está

repetida .v.=si , .f.=no

vedad Vector de edad

elimina

(no usamos)

Switch que indica si el valor se debe

eliminar .v.=si, .f.=no

vced_eli Vector cédulas eliminadas

pos Posición donde se insertan o se

elimina los valores

cmujmen Cantidad de mujeres menores de 20 años

Chom3040 Cantidad de hombre con edad

entre 30 y 40 años

Porhom3040 Porcentaje de hombres con edad entre

30 y 40 años

resp Respuesta a la pregunta desea

continuar

inserta Switch que indica si el valor se debe

insertar .v.=si, .f.=no

21. Elaborar un algoritmo que cargue un vector de números de 50

elementos y encuentre la suma de ellos e imprima los elementos del

vector y la suma calculada.

Page 9: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 9

22. Elaborar un algoritmo que cargue dos vectores de números de N

elementos cada uno (N< 20). Crear otro vector con la multiplicación

de los elementos respectivos de los vectores leídos 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 según su tipo de

sangre. Para ello se dispondrá de la siguiente información. Cantidad

de personas (máximo 20), tipo de sangre y cédula de identidad de

cada persona. Se pide un reporte que imprima las cédulas de

identidad de todos los donantes, clasificadas por tipo de sangre.

25. Elabore un algoritmo que cargue un vector X de números de 10

elementos y lea un valor CLAVE y averigüe 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 números de N elementos y se desea

reemplazar por cero (0) los elementos impares del vector. Diseñe un

algoritmo para solucionar este problema.

27. Diseñe un algoritmo que cargue un vector de números de N

elementos (máximo 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.

Page 10: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 10

28. El modo de un vector de números es él numero m del arreglo que se

repite con mayor frecuencia. Si se repite más de un número con

frecuencias máximas iguales, no existe un modo. Escriba un

algoritmo, que cargue un vector de números de 15 elementos y

averigüe el modo (si existe) o de una indicación de que el modo no

existe.

29. Elabore un algoritmo que cargue un vector de números 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 subíndices 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 inserción. 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

Page 11: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 11

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 intersección de los conjuntos definidos

por A y B. Por intersección 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 algún

elemento del arreglo leído, si es así, imprima los subíndices que

identifican la ubicación del elemento que contiene el valor del

numero leído, de lo contrario imprima el valor del numero leído 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.

Page 12: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 12

• El numero de fichas negras.

• Número total de fichas.

• Previamente se debe cargar la matriz. Diseñe 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 números pares que se

encuentren en la matriz leída. 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 número 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

señaladas y que además 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.

Page 13: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 13

43. Elabore un algoritmo que dada una matriz de N filas por N columnas

que debe ser leída. 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

demás elementos son iguales a cero (0). Por ejemplo la matriz

identidad de orden es:

1 0 0

0 1 0

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 3

5 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 leída, la matriz identidad del mismo orden y la

matriz aumentada.

Page 14: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 14

46. N trabajadores de la construcción laboran durante M días en cierta

obra. Al final de cada jornada, a cada hombre se le guarda, en un

registro que contiene el código del trabajador, el numero de horas

trabajadas durante la jornada. Al terminar la obra se tendrá la

siguiente información:

Codigo del Trabajador Día 1 Día 2 Día 3 … Día M

120 8:50 9:00 7:30 … 8:00

128 8.00 9.50 7.00 … 9.00

221 7:30 8:30 9:40 … 7:20

300 8:00 8:00 7:00 … 7:30

Codigo N 10:00 5:00 6:50 … 8:20

Diseñe un algoritmo que lea los datos anteriores teniendo en cuenta

lo siguiente:

Los números de identificación (códigos) 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 código del trabajador que más horas laboró y el número del día

en que más 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 número de candidatos y del número de municipios se cuenten

los votos y se den a conocer los resultados tomando en cuenta las

siguientes especificaciones:

Page 15: Ejercicios de Programacion o Asignaciones

Objetivo 1.- Ejercicios Propuestos de Arreglos, Caracteres, Ordenamiento y Búsqueda

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 15

• Se debe leer el número de candidatos a participar en las

elecciones y el número 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 algún candidato recibe más del 50 % de los votos debe

declararse como ganador.

• Si ningún candidato recibe más del 50 % de los votos se debe

imprimir el nombre de los candidatos más votados que pasarán 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

elaboración del algoritmo. Usar arreglos bidimensionales.

DISTRITO CANDIDATO1 CANDIDATO2 CANDIDATO3 TOTAL DISTRITO

1 150 100 50 300 2 300 50 350 700 3 100 120 100 320

TOTAL CANDIDATO

550

270

500

TOTAL DE VOTOS: 1320

Page 16: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 16

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 día de la semana en respuesta a la

entrada de la letra inicial (mayúscula o minúscula) de dicho

día.

ii. Determinar el número de días de un mes y año dados.

3. Escribir un programa que lea una cadena de hasta diez caracteres

que representa a un número en numeración romana e imprima el

formato del número romano y su equivalente en numeración

arábiga.

4. Escriba una función que calcule cuántos puntos de coordenadas

enteras existen dentro de un triángulo del que se conocen las

coordenadas de sus tres vértices.

5. Escribir un programa en base a funciones, que solicite del usuario un

carácter y que sitúe ese carácter en el centro de la pantalla. A

continuación, el usuario debe poder desplazar el carácter 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

Page 17: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 17

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 triángulo de Pascal con una altura dada por el usuario:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

En el triángulo de Pascal, cada número es la suma de los dos números

situados encima de él.

10. Escriba un programa que use funciones y menús 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 M M J V S D

1 2 3 4 5

6 7 8 9 10 11 12

13 14 15 16 17 18 19

20 21 22 23 24 25 26

27 28 29 30

13. El usuario indica únicamente el mes y el año. La fórmula que permite

conocer el día de la semana correspondiente a una fecha es:

Page 18: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 18

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=año; m=mes; d=día;

Nota: n mod 7 indica el día de la semana (1=lunes, 2= martes, etc.)

14. Realice un programa, el cual contenga una función que lea dos

números flotantes, y permita a través de funciones; sumar los dos

números, restarlos y multiplicarlos. El usuario podrá escoger la

operación que desee realizar luego de haber introducido los dos

números.

15. Realice un programa en C, el cual calcule el área de un rectángulo,

sabiendo que la fórmula para calcular dicha área es la siguiente:

Área del rectángulo = Base*Altura

16. Escribir un programa, que por medio de funciones, permita leer 3

números enteros y los imprima de forma ascendente.

17. Realice un programa que determine el mayor de 3 números enteros.

Debe emplear funciones. (Las comparaciones deben estar dentro

de una función)

18. Escribir un programa que contenga una función que reciba como

parámetro un número y devuelva como resultado un valor de tipo

lógico que indique si el número es o no par.

Page 19: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 19

19. Escribir un programa que contenga una función que reciba como

parámetro dos números y devuelva como resultado un valor de tipo

lógico que indique si el primer número es múltiplo del segundo.

20. Escribir un programa que contenga una función que reciba los

valores de x y n como parámetros de entrada y devuelva el valor de

x a la n como salida.

21. Escribir un programa que contenga una función que imprima la

pirámide

1 121

12321 1234321

La declaración de la función será la siguiente:

void piramide (int niveles)

Siendo niveles el numero de filas de la pirámide

22. Escribir un programa que contenga una función de nombre

Siguiente tal que, recibiendo un número primo mayor que uno,

devuelva el numero primo inmediatamente siguiente y superior a

dicho numero primo. Por ejemplo, si se invoca siguiente (7), la

función devolverá el numero 11.

23. Escribir un programa que contenga una función que reciba como

parámetros 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 función que reciba como

parámetros de entrada dos instantes de tiempo expresados en

horas, minutos y segundos y devuelva como resultado un 1 o un 2

Page 20: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 20

según el primer instante de tiempo sea anterior al segundo o

viceversa

25. Escribir un programa que contenga una función void maxmin (int x1,

int x2, Pint max, Pint min); que reciba como parámetros de entrada

dos numeros enteros x1 y x2 y devuelva a través de los parámetros

de salida max y min el máximo y el mínimo, respectivamente, de

ambos números.

26. Modificar la función anterior para que calcule también el valor

medio de ambos números. El nuevo prototipo de la función será

ahora el siguiente:

void maxmin (int x1, int x2, Pint max, Pint min, Pint media);

27. Escribir un programa que contenga una función cuyo prototipo es:

bool esLetra (char c); que reciba como parámetro de entrada un

carácter y devuelva un valor lógico true si dicho carácter es una

letra del alfabeto, y false en caso contrario.

28. Las resistencias electrónicas suelen ir identificadas por un código de

colores que permite marcar cada resistencia con su valor (en

Ohmios, W) y su Tolerancia (en %). Este código de colores viene

representado en la siguiente tabla:

Dígito Color Multiplicador Tolerancia

Ninguno 20%

Plata 0.01 10%

Oro 0.1 5%

0 Negro 1

1 Marrón 10

2 Rojo 102 2%

3 Naranja 103

4 Amarillo 104

5 Verde 105

Page 21: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 21

El código que suele emplearse en las resistencias es un código 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 número de 2 dígitos: Esos dos dígitos

vienen dados por el color de esas bandas, según la columna "Dígito" de

la tabla, La tercera banda es un valor por el que se multiplicará el

número 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-Marrón-Plata 220W, 10%

Según todo lo anterior:

• Implemente una función que permita calcular la resistencia y la

tolerancia de una resistencia, sabiendo los códigos de colores. El

subprograma tendrá, como mínimo, 4 argumentos, que serán

números naturales, y que indicarán el color de las bandas según

la columna "Dígito". Los colores Oro, Plata y Ninguno tomarán los

valores 10, 11 y 12 respectivamente.

• Implementar una función que muestre por pantalla el dígito que

le corresponde a cada color (incluyendo los dígitos 10, 11 y 12).

6 Azul 106

7 Violeta 107

8 Gris

9 Blanco

Page 22: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 22

Implementar también un programa que pida los colores de las 4

bandas y muestre los valores devueltos por la anterior función. El

programa mostrará el dígito que le corresponde a cada color usando el

procedimiento ya creado y leerá de teclado 4 números que

corresponderán 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 función sin argumentos que cada vez que se llame Fibb

devuelva el siguiente valor de la sucesión 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 función devolverá datos de tipo unsigned long

int. ¿Hasta qué término es posible calcular sin que se produzca

desbordamiento?. Intente modificar la función para que posibilite

llegar a un término mayor utilizando datos de tipo long double.

30. Calendario Perpetuo: Este ejercicio por objetivo averiguar el día de

la semana del 1 de Enero de cualquier año posterior a 1582.

Basándose en ese ejercicio hacer un programa que muestre en

pantalla el calendario de un mes y año 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 día de la

semana y teniendo en cuenta el número de días de cada mes,

prestando especial cuidado con el mes de Febrero por si es año

bisiesto. El programa deberá remarcar de alguna forma los días

festivos: Todos Domingos y algunas fiestas especiales 28 de Febrero

(día de Andalucía), 1 de Mayo (día del trabajo), 12 de Octubre (día

de la Hispanidad, Virgen del Pilar), 6 y 8 de Diciembre (día de la

Page 23: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 23

Constitución y de la Inmaculada), 25 de Diciembre (Navidad)... y

también el Jueves y el Viernes Santo.

31. Máximo Multiplicador Cabalístico: Hay números naturales que al

multiplicarlos sucesivamente por 1, 2, 3, 4... se obtienen números que

tienen los mismos dígitos que el original pero en distinto orden (sólo al

multiplicar por 1 se obtiene un número con los mismos dígitos en el

mismo orden). Supongamos que para el número N, se cumple esa

propiedad al multiplicarlo por 1, 2, 3..., X. Es decir, si yo multiplico N

por cualquier número del intervalo [1,X], el resultado será un número

con los mismos dígitos que N, pero en distinto orden. Entonces,

decimos que el "máximo multiplicador cabalístico" de N es X:

MMC(N)=X. Ejemplo: MMC(142857) = 6; à Por ejemplo,

142857*5=714285. Para el número 142857 la propiedad se cumple,

además de para el número 5, también para cualquier número del

intervalo [1,6]. Hacer un programa que muestre (usando funciones

independientes):

• La mayor lista de números 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 números

analizados.

• Dado un número N, mostrar su valor MMC(N).

32. Dividir calculando periodos: Implementar un programa para dividir

dos números de tipo long double. El resultado debe tener hasta 10

decimales, redondeando este último según el undécimo decimal.

El programa debe detectar e indicar si entre los 10 primeros

decimales se produce algún 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 división". Por defecto, al principio del

Page 24: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 24

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 sólo el divisor bastará con usar la segunda y tercera

opciones sucesivamente, ya que el dividendo permanecerá

constante mientras no se cambie usando la primera opción. Para

calcular los periodos se pueden calcular los restos obtenidos al sacar

decimales en la división y, en cada resto comprobar si ese resto ya

se ha repetido anteriormente, en cuyo caso tenemos un periodo a

partir de ese dígito.

33. Quizás el más famoso de todos los sistemas de codificación es el

código Morse, desarrollado por Samuel Morse en 1832, para uso en

el sistema telegráfico. El código Morse asigna una serie de puntos y

rayas a cada letra del alfabeto, a cada dígito y a unos cuantos

caracteres especiales. La separación entre palabras se indica por un

espacio o por la ausencia de un punto o una raya. La versión

internacional del código Morse aparece en la tabla siguiente:

Carácter Código Carácter Código

A .- T -

B -... U ..-

C -.-. V ...-

D -.. W .--

E . X -..-

F ..-. Y -.--

G --. Z --..

H ....

I .. Números

Page 25: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 25

J .--- 1 .----

K -.- 2 ..---

L .-.. 3 ...--

M -- 4 ....-

N -. 5 .....

O --- 6 -....

P .--. 7 --...

Q --.- 8 ---.

R .-. 9 ----.

S ... 0 -----

Escriba un programa que lea una frase escrita en español y cifre

dicha frase en código Morse y que también lea una frase en código

Morse y la convierta en el equivalente en español. 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 función Menu() que muestre las siguientes

opciones: 1) Pasar una frase a código Morse, lo cual se

implementará en una función que se llame Frase2Morse(), 2) Pasar

código Morse a una frase, implementando una función que se llame

Morse2Frase() y 3) Salir.

USANDO RECURSIVIDAD:

34. Calcular el máximo común divisor de una lista de números enteros. El

máximo común divisor es el mayor número entero que divide

(división exacta) a todos los elementos de la lista. Se introducirán

tantos números 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.

Page 26: Ejercicios de Programacion o Asignaciones

Objetivo 2.- Ejercicios Propuestos de Funciones y Recursividad

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 26

37. Imprimir los elementos de un arreglo.

38. Determinar si una cadena, introducida por teclado, es un

palíndromo.

39. Realizar una búsqueda de un elemento en un arreglo a través de

búsqueda binaria.

40. Imprimir en reversa una cadena introducida por el teclado. Máximo

de 60 caracteres más el carácter nulo.

41. Ordenar un arreglo a través del método de selección.

Page 27: Ejercicios de Programacion o Asignaciones

Objetivo 3.- Ejercicios Propuestos de Punteros o Apuntadores

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 27

1. Escribir una función que determine si una cadena de caracteres

recibida como parámetro está vacía o no

2. Escribir una función que reciba como argumento un arreglo de

caracteres y lo devuelva invertido por pantalla

3. Escribir una función 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' (Función

strcpy() de la biblioteca <string.h>).

4. Escribir una función que reciba como argumento dos cadenas de

caracteres, y realice la concatenación de una sobre la otra,

terminando la cadena con el caracter '\0' (Función strcat() de la

biblioteca <string.h>).

5. Escribir una función que reciba dos cadenas de caracteres como

argumentos, realice una comparación lexicográfica de las mismas, y

retorne por el nombre valores positivos, cero y negativos, según

corresponda. (Función strcmp() de la biblioteca <string.h>).

6. Escribir una función que dadas dos cadenas de caracteres y un

número "n" entero recibidos como parámetros, compare

lexicográficamente los primeros "n" caracteres, devolviendo un valor

positivo, cero o negativo, según corresponda. (Función strncmp() de

la biblioteca <string.h>).

7. Escribir una función 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,

Page 28: Ejercicios de Programacion o Asignaciones

Objetivo 3.- Ejercicios Propuestos de Punteros o Apuntadores

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 28

sin terminar la cadena con el carácter nulo. (Función strncpy() de la

biblioteca <string.h>).

8. Escribir una función que convierta a minúsculas una cadena de

caracteres recibida como argumento.

9. Escribir una función que convierta a mayúsculas una cadena de

caracteres recibida como argumento.

10. Escribir una función que reciba una cadena de caracteres como

argumento, y la convierta a minúsculas o mayúsculas, de acuerdo a

una opción ingresada por el usuario a través del parámetro "format",

cuyo tipo es case, un tipo enumerativo compuesto por los tokens

UPPERCASE y LOWERCASE:

11. Escribir una función que responda al siguiente prototipo: void

replace (char *s, char nuevo, char viejo) ; y reemplace en la cadena

"s" todas las apariciones del carácter "viejo" por el carácter "nuevo".

12. Escribir una función que reciba como parámetro una cadena de

caracteres que comienza con espacios en blanco, y los elimine

desplazando los caracteres útiles hacia la izquierda. (operación "left-

trim").

13. Escribir una función que reciba como parámetro una cadena de

caracteres que finaliza con espacios en blanco, y los elimine

desplazando los caracteres útiles hacia la izquierda. (operación

"right-trim").

14. Escribir una función que reciba dos cadenas de caracteres

denominadas "s1" y "s2" respectivamente, y verifique la existencia de

Page 29: Ejercicios de Programacion o Asignaciones

Objetivo 3.- Ejercicios Propuestos de Punteros o Apuntadores

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 29

la cadena s2 como subcadena integrante de la s1, retornando un

token del tipo enumerativo int por el nombre de la función (ver

función strstr() de la biblioteca <string.h>).

15. Escribir una función que reciba una cadena de caracteres y

determine si es un palíndromo o no, retornando el resultado por el

nombre. Considerar el caso de longitudes de cadena par e impar.

16. Escribir una función que reciba una matriz cuadrada de enteros y su

dimensión, y determine si es una matriz es simétrica o no, retornando

el resultado por el nombre.

17. Escribir una función que reciba una matriz cuadrada de doubles y su

dimensión, y retorne el valor de su determinante.

18. Escribir una función que calcule las partes entera y decimal de

cualquier número real recibido como argumento, y las retorne por

pantalla.

19. Escribir una función que convierta un número que representa una

cantidad de segundos, a su equivalente en horas, minutos y

segundos, retornando las partes por pantalla.

20. Escribir una función 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

través de una resistencia dada, cuando se le aplica un voltaje

determinado. El programa deberá estar dividido en las siguientes

funciones:

Page 30: Ejercicios de Programacion o Asignaciones

Objetivo 3.- Ejercicios Propuestos de Punteros o Apuntadores

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 30

explicar_programa (): Esta función mostrará una introducción del

programa por la pantalla.

obtener_valores (): Esta función pedirá los valores para la resistencia

y voltaje los cuales se pasarán por referencia al programa principal.

calcular (): Esta función efectuará el cálculo de la intensidad a partir

de la resistencia y el voltaje aplicado.

imprimir_respuesta (): Esta función se encargará de mostrar un

mensaje con los resultados.

22. Crear una función que intercambie el contenido de dos variables.

Para ello se pasarán como parámetros las direcciones de las

variables. Para probar la función escribir un programa que pida los

datos por pantalla y muestre los contenidos después de llamar a la

función.

23. Crear un programa que lea un número determinado (<100) de

números reales introducidos por teclado los almacene en un vector

para mostrarlos luego en orden inverso.

Nota: Para recorrer el array se deberá usar aritmética de punteros en

lugar de usar los índices del array.

24. Escribir una función que tras pedir un día de la semana (de 1 a 7)

devuelva un puntero a cadena con el nombre del día. La función

contendrá un array de apuntadores a cadena. Para probar la

función se realizará un programa que pida un día de la semana en

número y escriba el día de la semana en letra.

25. Escribir un programa que inicialice una cadena con una palabra

cualquiera. El programa deberá obtener la dirección de la primera

letra de la cadena. Una vez sabida esta dirección la mostrará por

pantalla y realizará un bucle dando 3 oportunidades para que el

Page 31: Ejercicios de Programacion o Asignaciones

Objetivo 3.- Ejercicios Propuestos de Punteros o Apuntadores

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 31

usuario introduzca la dirección de la tercera letra de la cadena. En

caso de no introducirla bien después de los 3 intentos, deberá sacar

un mensaje indicando cuál es la dirección correcta.

Page 32: Ejercicios de Programacion o Asignaciones

Objetivo 4.- Ejercicios Propuestos de Estructuras

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 32

1. Una empresa dedicada a la venta de discos compactos (CD) desea

almacenar los datos de una colección de CD de música, con el

propósito de llevar su inventario y obtener información rápida de

ellos. Se requiere que usted realice un programa en C, que diseñe

una estructura llamada “CD” que contenga los siguientes miembros

(campos):

Nombre del Miembro Tipo de Dato

Título Arreglo de caracteres de tamaño 30 Artista Arreglo de caracteres de tamaño 25 Número de canciones Entero. Cantidad de CD Entero. Precio Coma flotante

Tomando en cuenta la información anterior realice lo siguiente:

• Cree un arreglo unidimensional (vector) de 100 estructuras,

• Diseñe la función “void incluir_cd (struct cd arreglo_cd[100])”

que permita ingresar los datos de los CD en el arreglo.

• Diseñe la función “void listar_cd (struct cd arreglo_cd[100])”

que permita mostrar todos los datos de los CD contenidos en

el arreglo.

• Diseñe la función “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 número 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.

Page 33: Ejercicios de Programacion o Asignaciones

Objetivo 4.- Ejercicios Propuestos de Estructuras

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 33

2. Se desea que usted almacene M llamadas telefónicas. De cada

llamada se almacenan los siguientes datos: código de área, número

marcado, duración, fecha y destino; además por razones de

operaciones se quiere que la fecha contenga: hora, minutos,

segundos, día, mes y año en que fue realizada.

Se requiere el siguiente reporte:

• Número de llamadas realizadas en el mes de febrero del año

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 información de la comunidad es guardada en un

arreglo, llamado COLEGIO, cuyos componentes son del tipo

PERSONAL. Los datos del personal son: nombre, apellido, edad,

dirección y otros datos que dependen de si la persona es profesor o

alumno. En el caso de un profesor se almacena la categoría ( fijo o

contratado), el salario y el turno; para los alumnos se almacena el

curso, la sección y la nota promedio.

• Calcule el número de alumnos y profesores del Colegio.

• Liste el nombre, apellido, edad y promedio de todos los

alumnos de la sección dos de cuarto año.

• Liste nombre, apellido, dirección y turno de los profesores

contratados con salario >= 1500 BF

4. En una librería tienen la necesidad de automatizar el manejo de la

información de los libros que están 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 información:

• Cota del libro.

Page 34: Ejercicios de Programacion o Asignaciones

Objetivo 4.- Ejercicios Propuestos de Estructuras

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 34

• Nombre del libro.

• Nombre del autor.

• Nombre de la editorial.

• Fecha de edición. (Hacer otra estructura llamada fecha: día,

mes y año)

• Precio.

Ahora se requiere que construya un menú que incorpore además de la

opción 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

través de un mensaje

• Listar_Autor: muestra una lista de libros según un autor

solicitado. Si el autor no está registrado se le debe indicar al

usuario a través 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, teléfono, dirección y tipo de enfermedad. Se

debe validar que solo se ingrese los tipos de enfermedad en

Page 35: Ejercicios de Programacion o Asignaciones

Objetivo 4.- Ejercicios Propuestos de Estructuras

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 35

estudio (Paludismo y Fiebre Amarilla) y que la Cédula del

paciente no se repita.

• Buscar_Paciente: dada la cédula 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, dirección, teléfono, 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

ningún 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 ningún

cambio.

• Se debe salir del programa sólo por la opción 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

Page 36: Ejercicios de Programacion o Asignaciones

Objetivo 4.- Ejercicios Propuestos de Estructuras

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 36

considerará activo, sino si el campo Marca es igual a 1, entonces el

contacto estará eliminado.

7. En una línea 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 información:

• Número de la Unidad

• Nombre del Chofer

• Destino

• Número total de boletos

• Precio del boleto

• Número del boleto vendido. (No debe ser mayor que el

Número total de boletos)

• Fecha de Salida (Hacer otra estructura llamada fecha: día,

mes y año)

Ahora se requiere que construya un menú que incorpore además de la

opción Salir las siguientes funciones:

• Registrar_Boletos: El programa registrará los boletos por

unidad. Para ello se solicitará: Núm. de la Unidad, nombre del

chofer, destino al que viajará la unidad, número total de

boletos disponibles, precio del boleto.

• Venta_Boletos: Función 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 número del

boleto a vender. Además, se debe decrementar el Número

total de boletos. Por último se debe mostrar por pantalla los

datos del boleto vendido.

Page 37: Ejercicios de Programacion o Asignaciones

Objetivo 4.- Ejercicios Propuestos de Estructuras

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 37

• Cierre_Venta: Esta función simula el cierre de las ventas,

mostrando por pantalla un informe con: Número de la unidad,

nombre del chofer, destino, número de boletos vendidos,

número de boletos restantes, monto total en Bs.F. por los

boletos vendidos en todas las unidades.

8. Una aplicación informática de un centro universitario dispone de la

siguiente información sobre una carrera:

Por cada asignatura: a) cédula del profesor que la imparte; b) código de asignatura (único); c) nombre de la asignatura; d) semestre; e) créditos;

Por cada profesor: a) cédula; b) nombre del profesor; c) fecha de ingreso al instituto; d) fecha de nacimiento; e) dedicación (exclusiva, tiempo completo y medio tiempo).

Teniendo en cuenta que un profesor puede impartir más de una

asignatura, diseñar las estructuras de datos apropiadas y los siguientes

subprogramas:

• ProfesorAsignatura. A partir de la(s) estructura(s) de datos

adecuada y el código 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 año de los

profesores del instituto. El sueldo base anual depende de la

dedicación: 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 dedicación exclusiva el

sueldo incluye un complemento que se calcula en función del número de

años que el profesor ha trabajado en la institución, cobrando 150 Bsf

mensuales por cada cinco años completos trabajados. Si el profesor es

Page 38: Ejercicios de Programacion o Asignaciones

Objetivo 4.- Ejercicios Propuestos de Estructuras

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 38

tiempo completo o medio tiempo el sueldo no incluirá el complemento de

quinquenios.

9. Se requiere simular un Sistema de Reservación de Boletos en una

compañía aérea, diseñando 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 opción se debe Considerar lo siguiente:

• Opción 1. De los vuelos se conoce: Número de vuelo, Número

máximo de pasajeros, Nombre del piloto, Destino, Fecha de

salida. La empresa solo tiene capacidad para 3 vuelos.

• Opción 2. De la transacción con los pasajeros se conoce:

Número de vuelo reservado, Cédula, Nombre y Apellido del

pasajero, Estado de la transacción (Reservado, Confirmado o

Cancelado). Cuando llega una solicitud de reservación, 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.

• Opción 3. Si llega una confirmación del pasaje, la acción a

tomar (suponiendo que esta persona esté en el arreglo de

reservaciones) es cambiar el estado de reservado a

confirmado.

• Opción 4. Si el pasajero cancela el pasaje, la acción a tomar

será cambiar el estado de reservado a Cancelado.

Page 39: Ejercicios de Programacion o Asignaciones

Objetivo 4.- Ejercicios Propuestos de Estructuras

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 39

• Opción 5. Mostrar para un vuelo en particular, la cantidad de

puestos disponibles.

• Opción 6. Dado un Número de vuelo, mostrar sus datos,

además 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 Especialización

en Redes. Se debe mostrar el siguiente menú:

a. Registrar Calificaciones

b. Consultar Calificaciones

c. Mostrar Listado de Promedios

d. Mostrar Listado por Módulos

e. Salir del Sistema

Para cada opción se debe tener en cuenta lo siguiente:

• Opción ‘a’: registrar los siguientes datos: Cédula, Nombre y

Apellidos del estudiante y las calificaciones correspondientes

a cada uno de los cuatro Módulos allí cursados. Es importante

mencionar, que se tienen 20 Estudiantes.

• Opción ‘b’: Dada la Cédula de un estudiante, se desea

conocer los datos y calificaciones del mismo.

• Opción ‘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.

• Opción ‘d’: Dado el número de un módulo, se desea mostrar

los estudiantes que aprobaron dicho módulo.

Page 40: Ejercicios de Programacion o Asignaciones

Objetivo 5.- Ejercicios Propuestos de Archivos

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 40

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 línea 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 número 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 línea final del archivo debe contener el numero total

de vocales almacenadas, en otro archivo se deben colocar los

Page 41: Ejercicios de Programacion o Asignaciones

Objetivo 5.- Ejercicios Propuestos de Archivos

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 41

números existentes en el texto y en la línea final debe colocar la

cantidad números. Debe haber un tercer archivo en en el cual se

almacene el total de caracteres del archivo original y el total de líneas

del archivo original.

9. Uno de los sistemas de encriptación muy usados en el pasado, fue el

método 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 método es el

siguiente:

Mensaje original: HOLA MUNDO

Si el desplazamiento es K=4, este mensaje se transforma en:

Mensaje Cifrado: LSPERYQHS

10. Diseñe 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 situación 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 situación atendiendo los requerimientos que plantea. Desea un

programa que permita registrar las entradas y salida de los clientes del

hotel, así como también 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 habitación reservada.

Page 42: Ejercicios de Programacion o Asignaciones

Objetivo 5.- Ejercicios Propuestos de Archivos

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 42

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 clásico, Dengue

Hemorrágico 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

también 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, teléfono y

dirección.

13. La Academia Local “Cisco System”. Desea desarrollar un programa

para el registro y control de los estudiantes que allí realizan su curso de

especialización 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. Diseñe 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

(eliminación lógica y física) un elemento del archivo, modificar los datos

de un elemento, buscar un elemento. Los datos a almacenar por cada

Page 43: Ejercicios de Programacion o Asignaciones

Objetivo 5.- Ejercicios Propuestos de Archivos

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 43

persona son: Cedula, nombre, edad. El programa debe tener un menú

que permita al usuario seleccionar la opción deseada.

15. El messenger es un programa que permite a una persona comunicarse

con otra a través de un sistema de charla on-line. Este programa

además 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. Además el programa permitirá

determinar el número 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 electrónico principal,

correo electrónico secundario, dirección y teléfono. La búsqueda de un

contacto se puede realizar por su nombre, correo electrónico, o Nick.

16. 14) El concesionario de Autos usados “El primero”, lo ha contratado a

usted como analista – programador para que diseñe el sistema de

control del parque automotor. La empresa requiere: totalizar el número

de autos en el parque, un reporte por marca de autos y total, un

reporte de los autos en el parque por año de construcción, un reporte

general de todos los autos. Así como también desea conocer los autos

que hasta una fecha dada (Mes y año) tengan más de 30 meses en el

parque. Esta empresa distribuye tan solo autos de 3 fabricantes: Toyota,

Ford, Chevrolet.

17. El Sistema escolar para adultos “Revolución en América 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

Page 44: Ejercicios de Programacion o Asignaciones

Objetivo 5.- Ejercicios Propuestos de Archivos

Recopilado por: Docentes del área de Programación / Trayecto I / Trimestre II Unidad Curricular: Programación I Página 44

estudiante en este sistema cursa un máximo 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”.