Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicios de Programacion en C 35 Pags
Ejercicios de Programacion en C 35 Pags
programacin en
Informtica Industrial
Ingeniera en Automtica y Electrnica Industrial
2. Sentencias condicionales 3
3. Sentencias repetitivas 6
4. Funciones 10
5. Arrays 14
6. Punteros 18
7. Cadenas 20
8. Estructuras 25
9. Ficheros 30
1. Programa que pida un valor en pesetas y lo convierta en euros y otro programa que
lleve a cabo la operacin inversa.
4. Crear un programa que pida el radio de una circunferencia y que calcule la longitud
de la misma as como el rea incluida dentro.
5. Crear un programa que calcule la fuerza de atraccin gravitacional entre dos masas,
M1 y M2 situadas a una distancia R.
M 1* M 2
F =G ( Nw)
R2
donde las masas se expresan en kilogramos y la distancia en metros y la constante
de gravitacin universal vale:
G = 6.67 x10 11 Nw * m 2 / Kg 2
Ejemplo:
10. Crear un programa que muestre en pantalla el tamao en bytes (8 caracteres) de las
variables ms frecuentes: char, int, short int, long int, float y double.
(Nota: Para calcular el tamao de una variable se puede usar el operador sizeof.)
12. Escribir un programa que lea el valor de un ngulo en radianes y muestre su valor en
grados, minutos y segundos
13. Programa que tras pedir por teclado un nmero lo multiplique por 4 y divida por 2
utilizando los operadores de rotacin.
Sentencias condicionales
2. Escribir un programa que tras pedir 2 nmeros por la pantalla muestra cul es el
mayor nmero. (Hgase con la sentencia if y con el operador condicional:
expresin ? valor1 : valor2 )
4. Crear un programa que calcule la cada de potencial producida por una resistencia
segn la ley de Ohm (V = I * R) a partir de la resistencia y la intensidad que pasa a
su travs.
6. Escribir un programa que calcule las races, bien reales o imaginarias, de una
ecuacin de segundo grado.
El programa tambin debe ser capaz de operar con valores nulos para el coeficiente
de orden dos (es decir, deber de ser capaz de resolver ecuaciones de primer grado)
10 si x*y<1
y2 si x*y1
1 si x*y<1
y2 si x*y1
Escribir un programa que calcule los valores de las funciones U y V, una vez
conocidas las coordenadas de un punto (x, y).
Escribir un programa que pida como entrada un ao y saque por pantalla la fecha del
Domingo de Pascua para ese ao.
10. Leer desde el teclado las coordenadas (x, y) de un punto y, mediante un men, elegir
una entre las siguientes opciones:
y r
arg
X
11. Escribir un programa que permita efectuar el clculo del rea de un cuadrado, un
crculo o un tringulo equiltero segn la opcin seleccionada por el usuario a travs
de un men.
12. Dada la longitud de una circunferencia, averiguar si dicha longitud corresponde, con
una determinada precisin, a una circunferencia de radio R.
13. Escribir un programa que pida dos caracteres por pantalla, los ordene
alfabticamente, y los imprima ordenados.
Sentencias repetitivas
Nota: Mejorar el programa para que compruebe que el exponente es mayor que
0 y si no lo es dar un mensaje de error y pedir otro exponente.
Ejemplo:
S
1
(1) * i
i =1
i
2
6. Programa que escriba en pantalla una tabla con cuadrados y cubos a partir de un
nmero base hasta otro tope, ambos pedidos por teclado.
Nota: El programa utilizar slo variables de tipo short int y deber evitar
errores de overflow.
Ejemplos de ejecucin:
Tabla de cuadrados y cubos Tabla de cuadrados y cubos
Nota: en negrita se han indicado los valores introducidos por el usuario durante
la ejecucin del programa.
8. Hacer un programa que lea caracteres desde teclado hasta que lea 10 veces la letra
'a'. Por cada carcter ledo que no sea una 'a' debe mostrar un mensaje indicndolo.
Cuando lea las 10 letras 'a' el programa terminar.
9. Hacer un programa que lea caracteres desde teclado y vaya contando las vocales
que aparecen. El programa terminar cuando lea el carcter # y entonces mostrar
un mensaje indicando cuntas vocales ha ledo (cuntas de cada una de ellas).
10. Repetir el ejercicio leyendo caracteres hasta que se lea el carcter final de fichero
EOF (^Z) en lugar del carcter #.
11. Programa que simule que se deja caer una pelota desde un edificio de X metros
de altura (donde X se pide por teclado) mostrando en cada 0.1 segundos tanto la
altura de la pelota como su velocidad.
Mostrar para cada instante de tiempo (cada 0.1 segundos) una lnea del estilo:
t=xx.x distancia al suelo=xx.xx metros velocidad=xx.xx m/s
12. Programa que calcule los ns primos del 1 al 100 y los saque por pantalla.
13. Escribir un programa que primero pida por pantalla con cuntos nmeros se va a
trabajar digamos que sean X) y luego pida los X nmeros por pantalla.
14. Programa que pida nmeros de cuatro cifras e indique si los nmeros son
capicas o no. El programa deber ir pidiendo nmeros hasta que el usuario
introduce -1 por teclado. El nmero 1 indicar la finalizacin de la ejecucin
del programa.
15. Escribir un programa que calcule los nmeros perfectos entre 1 y 10000.
Nota: Un nmero perfecto es aqul tal que la suma de sus divisores menos el
propio nmero es el propio nmero.
Ejemplos:
16. Escribir un programa que muestre el siguiente men y que permita pasar
magnitudes de grados a radianes y de radianes a grados.
17. Escribir un programa que muestre una tabla con los caracteres ASCII mostrados
en decimal, octal y hexadecimal. El programa mostrar la informacin con el
siguiente formato:
El programa pedir el primer carcter y los ltimos caracteres que marcarn los
lmites de la tabla.
18. Escribir un programa que calcula el producto de los dgitos de un nmero entero
ledo desde teclado.
Funciones
Nota: Cada conversin se efectuar por medio de funciones, una que convertir de
grados Celsius a grados Fahrenheit y otra que haga justo lo contrario.
2. Realizar un programa que escriba todos los nmeros enteros menores que un cierto
entero N y que a su vez sean mltiplos de dos nmeros enteros A y B introducidos
por teclado.
Utilizar para ello una funcin que admita dos parmetros I, J e indique si I es
mltiplo de J.
Se deber utilizar un subprograma que permita evaluar la expresin (1/2)t/h para los
diferentes valores de t.
5. Escribir una funcin que escriba tantas lneas en blanco como se haya pedido con
anterioridad al usuario en el programa principal.
6. Escribir una funcin que tome el tiempo introducido por el usuario en el formato
(horas:minutos:segundos) y lo convierta en segundos. El programa utilizar esta
funcin para calcular la diferencia en segundos entre dos tiempos introducidos por el
usuario.
M M!
=
N N ! ( M N )!
1. Factorial de un nmero
2. Clculo de e
3. Clculo de e^x
0. Salir
x2 x4 x6
cos ( x) = 1 + +...
2! 4! 6!
Escribir un programa que calcule el valor aproximado de coseno (x), utilizando para
ello los N primeros trminos de la serie de Taylor. El nmero de trminos N de la
serie depender del valor del ltimo, es decir, se aadirn trminos a la serie hasta
que el valor absoluto del ltimo trmino aadido sea menor que 0.0005.
10. Se desea realizar un programa que permita hacer clculos con polinomios de
segundo grado.
1. Leer un polinomio
2. Escribir un polinomio en su forma habitual
3. Evaluar un polinomio en un punto
4. Calcular el polinomio derivado
0. Salir
El programa deber ir escribiendo la tabla de los factores primos, a medida que los
va calculando, tal como muestra el ejemplo siguiente:
N | Factores primos
-- | ---------------
84 | 2
42 | 2
21 | 3
7 | 7
1 |
Ayuda: Se deber utilizar una funcin que nos diga si un nmero es primo o no.
N. de caracteres en blanco
N. de dgitos
N. de letras
N. de lneas
N. de otros caracteres
Nota 3: Para marcar el final de lectura del texto, el usuario deber introducir un
carcter que marque fin de fichero. Este carcter es ^D en Linux y ^Z en
DOS / Windows.
13. Escribir un programa que lea dos nmeros complejos y permita realizar con ellos las
siguientes operaciones aritmticas: suma, resta, multiplicacin y divisin
Nota 1: Se debe crear una funcin de permita leer un nmero complejo (su parte
real y su parte imaginaria).
Arrays
Ej:
C:> decihex 128 111
Deci= 128 Hex= 80
Deci= 111 Hex= 6F
C:>
Nota 1: Al igual que en el ejemplo, el programa deber ser capaz de convertir
varios nmeros en una llamada.
Nota 2: En caso de que el programa no reciba argumentos deber devolver un
mensaje de error.
Nota 3: La funcin atoi() convierte de cadenas a enteros.
4. Escribir un programa que pida un array de caracteres por pantalla e invierta el orden
de los caracteres mostrndolo por pantalla. La inversin se har sin utilizar otro
array auxiliar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
6. Realizar un programa que maneje un array de enteros a travs de un men con seis
opciones:
7. Escribir un programa que permita guardar las cuentas de un banco con sus
respectivos saldos. Para ello se guardar la informacin en un array paralelo (dos
arrays unidimensionales, uno con los nmeros de cuenta y otro los saldos)
El programa deber mantener las cuentas ordenadas, de menor a mayor, por nmero
de cuenta para facilitar la bsqueda de una cuenta.
1.- Dar de alta una nueva cuenta (comprobando que el array no est lleno y
colocando la cuenta en la posicin correspondiente dentro del array)
2.- Eliminar una cuenta (comprobando que el array no est vaco y reposicionando
las cuentas en el array)
3.- Mostrar una cuenta (mostrar el nmero de cuenta y el saldo correspondiente)
4.- Mostrar informacin (Nmero de cuentas dadas de alta y dinero total de todas
ellas)
5.- Calcular el saldo medio, mximo y mnimo de las cuentas del array.
6.- Mostrar todas las cuentas (1 lnea por cuenta con su nmero y su saldo).
0.- Terminar
8. Escribir un programa que rellene automticamente una matriz 4x7 con la suma de
sus ndices (Es decir, el elemento a11 = 1+1=2, a47 = 4+7=11). El programa
mostrar la matriz resultante por pantalla.
9. Escribir un programa que pida una matriz de orden 3x3 y calcule y muestre por
pantalla su matriz traspuesta.
10. Crear un programa que permita reservar asientos de una sala de cine (8 filas x 20
columnas). La posicin de cada asiento se definir con una letra (A-H) para la fila y
un nmero (1-20) para la columna. El programa deber visualizar qu sitios estn
disponibles para que el cliente pueda decidir dnde sentarse. Antes de hacer la
reserva, el programa deber comprobar que el asiento est libre, en caso contrario
devolver un mensaje de error.
Ej. de visualizacin:
1...5....0 1...5....0
_____________________
A ** A
B **** *** B
C ** **** ** **** C
D *** * ** *** ** *** D
E ***** **** ** ** E
F ******** *** * ** F
G ** **** **** ** G
H ******* *** H
1...5....0 1...5....0
11. Un histograma es un grfico que muestra la frecuencia con que aparecen en una
array dado valores dentro de subintervalos especificados de su intervalo. Por
ejemplo, si un array unidimensional de enteros tiene elementos de tipo 0..9 y
contiene los siguientes valores:
6 4 4 1 9 7 5 6 4 2 3 9 5 6 4
Su histograma sera:
4 *
Frecuencia 3 * *
2 * * * *
1 * * * * * * * *
Valor 0 1 2 3 4 5 6 7 8 9
Escribir un programa que, tras leer las notas de los alumnos en una asignatura,
genere y visualice el histograma de las notas redondeadas a valores enteros: 0, 1,
2,...10
Las notas ledas desde el teclado son valores de tipo real y el nmero de alumnos no
es fijo aunque siempre es menor de 300.
12. Escribir un programa que rellene un array con nmeros aleatorios de tipo float. El
programa, primero pedir la cantidad de nmeros aleatorios (mximo 50) y el rango
de los nmeros aleatorios (valor_min .. valor_max) y posteriormente mostrar todos
los nmeros aleatorios en el orden en que se han generado y finalmente en orden de
menor a mayor.
El programa leer las dimensiones y los elementos de cada una de las matrices
(dimensiones mximas 5 x 5) y a continuacin, si se puede efectuar el producto,
realizar lo calcular y mostrar el resultado en forma matricial.
Punteros
2. 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.
3. 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.
Nota: Para recorrer el array se deber usar aritmtica de punteros en lugar de usar
los ndices del array.
6. 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 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.
Cadenas
1.
1. Escribir un programa que pida una cadena de caracteres (de longitud mxima 80
caracteres) y devuelva la cadena escrita al revs.
2. Realizar un programa que lea una cadena de caracteres de una longitud menor de 80 y
visualice los caracteres de la siguiente forma:
3. Escribir una funcin que cambie las letras maysculas de una cadena a minsculas
y viceversa. El programa principal pedir una cadena por pantalla y se la pasar a
dicha funcin esperando el resultado correcto que se mostrar por pantalla.
4. Escribir un programa que pida primero un carcter por teclado y que luego pida una
cadena. El programa calcular cuntos caracteres tiene la cadena hasta que lea el
carcter introducido primero. Se deber mostrar un mensaje en pantalla con el
nmero de caracteres introducidos hasta llegar al carcter primero.
Ayuda: Para saber si un carcter es numrico comparar que su valor es mayor que
0 y menor que 9, para saber si es alfabtico comprobar que est entre a y z y
considerar signos de puntuacin el resto de los caracteres.
6. Realizar un programa que lea una cadena de caracteres con espacios en blanco
excesivos: elimine los espacios en blanco iniciales y finales y slo deje uno entre cada
dos palabras.
7. Crear un programa que pida una cadena de caracteres y devuelva otra sin signos de
puntuacin ni nmeros. La cadena devuelta debe tener todos los caracteres en
maysculas.
Ayuda:
Se pueden usar las siguientes funciones estndar de C: ispunct(), islower(), gets()
En TurboC tambin existe la funcin: strupr()
Cdigo ASCII de A 65
a 97
8. Crear un programa que pida por pantalla una cadena de 80 caracteres de longitud
mxima y que calcule el nmero de veces que aparece otra cadena determinada,
tambin pedida por teclado.
Como salida el programa debe escribir un mensaje con el nmero de veces que
aparece la palabra dada.
Nota: Un palndromo es una palabra que se lee igual al derecho que al revs.
10. Escribir una funcin que compare 2 cadenas de caracteres devolviendo 1 si son
iguales y 0 si son distintas.
11. Escribir un programa que pida dos cadenas (de longitud mxima 10 caracteres) y
muestre por pantalla el resultado de las siguientes operaciones:
12. Escribir un programa con un men que permita las siguientes opciones:
Pasar a maysculas una cadena leda desde teclado. Para ello, escribir un
procedimiento que transforme caracteres de letras minsculas a maysculas
dejando como estn las letras maysculas.
Nota: Para llevar a cabo esta operacin tener en cuenta la representacin de los
caracteres en ASCII. (A 65, a 97)
Nota comn: En todos los casos si se intenta efectuar alguna operacin antes de
introducir la cadena se deber mostrar un mensaje de error comunicando al usuario
que la cadena est vaca.
13. Julio Cesar enviaba mensajes a sus legiones encriptando los mensajes mediante el
siguiente algoritmo:
Se pide crear un programa que encripte una frase mediante este algoritmo.
14. Construir un programa que implemente una calculadora para nmeros enteros:
15. Realizar un programa que permita calcular el NIF., conocido el DNI. de una
persona.
El programa deber leer, sobre una cadena de caracteres, el nmero del DNI. del
interesado. Seguidamente deber averiguar si es un valor vlido (todos los caracteres
deben ser numricos y representar un valor entre 100.000 y 99.999.999). Si la
entrada es vlida se deber calcular el NIF. y representar el nmero completo con los
puntos de millares y millones en las posiciones correspondientes, as como la letra
del NIF al final de la cadena de caracteres separada por un espacio en blanco.
Se obtiene el resto de la divisin del nmero del DNI, entre 23, y en funcin del
resultado se asigna un carcter segn la siguiente tabla:
0 = T 7 = F 14 = Z 21 = K
1 = R 8 = P 15 = S 23 = E
2 = W 9 = D 16 = Q
3 = A 10 = X 17 = V
4 = G 11 = B 18 = H
5 = M 12 = N 19 = L
6 = Y 13 = J 20 = C
Escribir un programa que lea una frase y la codifique en cdigo Morse. Tambin escriba
un programa que lea una frase en cdigo Morse y la convierta en su equivalente en
castellano. La separacin entre letras se indicar mediante un espacio, mientras que la
separacin entre palabras se indicar mediante 3 espacios.
17. Escribir un programa que permita al usuario realizar las siguientes operaciones:
Estructuras
1. Realizar un programa que permita realizar las operaciones bsicas (sumar, restar,
multiplicar y dividir) nmeros complejos.
2. Crear un programa que lea las siguientes variables proporcionadas desde teclado con
el siguiente formato:
Nota: Construir una funcin que muestre por pantalla la estructura recibida. La
estructura deber pasarse por referencia para no malgastar espacio en la pila.
Nota: Dentro de los subprogramas que considere necesarios deber haber uno,
llamado descomponer, que tome un registro y lo descomponga en dos.
4. Crear un programa que permita introducir cierta informacin relativa a los vuelos
diarios que parten de un aeropuerto en un array formado por registros. Cada registro
contendr la siguiente informacin sobre el vuelo correspondiente:
a) Nmero de vuelo (No tiene por qu coincidir con el ndice del array)
b) Hora de partida (En dos campos): 1. Hora: 0..23
2. Minutos: 0..59
c) Origen del vuelo: Cadena de caracteres
d) Destino del vuelo: Cadena de caracteres
e) Nmero de pasajeros: Entero
Una vez introducidos los datos de todos los vuelos se preguntar si se desea obtener
informacin de algn vuelo. En caso de que el usuario responda afirmativamente se
pedir el nmero de vuelo. El programa buscar el vuelo en al array y acceder a la
informacin que contiene a partir de su nmero de vuelo, mostrando por pantalla
todos sus datos.
Nota: Se deben disear las funciones que visualicen un vuelo, busquen un vuelo en
el array, introduzcan la informacin de un vuelo en el array, etc...
5. Una compaa utiliza aviones para fumigar las cosechas contra una gran variedad de
plagas. Lo que la compaa cobra a los granjeros depende de contra qu es lo que
desean fumigar, y de cuantos m2 de tierra quieren que se fumiguen de acuerdo con la
siguiente tabla:
Tipo1: Fumigacin contra malas hierbas 18 / m2
Tipo2: Fumigacin contra langostas 36 / m2
Tipo3: Fumigacin contra gusanos 54 / m2
Tipo4: Fumigacin contra todo lo anterior 90 / m2
Finalmente muestre en pantalla la suma de todos los nmeros del array que sean
primos.
7. Escribir un programa que cree una base de datos temporal sobre el personal de
agentes de polica. La base de datos almacenar cuatro datos acerca de cada persona:
Ficheros
1. Crear un programa que abra un fichero y escriba nmeros enteros y otro programa calcule
el valor mximo (si hay varios basta con uno de ello) y la media de todos los nmeros
contenidos en el fichero anterior:
3. Crear un programa que abra un fichero y escriba en l dos cadenas, cada una acabada con
el carcter de nueva lnea y otro programa que lea la segunda cadena escrita en el mismo
fichero.
Comprobar que el fichero existe y visualizar su contenido con un editor de textos (p.e. el
Block de Notas de Windows)
4. Escribir un programa que tome caracteres de teclado y, de uno en uno, los escriba en un
fichero cuyo nombre es previamente pedido por pantalla.
5. Escribir un programa que saque por pantalla el contenido de un fichero cuyo nombre es
pedido por pantalla.
6. Escribir un programa que comprueba que un fichero de cdigo contiene el mismo nmero
de { que de } en su cdigo. En caso de que no sea as el programa mostrar un
mensaje indicando que el nmero de { es distinto que el nmero de }.
7. Escribir un programa que use dos ficheros: uno de lectura y otro de escritura. El programa
leer los caracteres de un fichero, y tras una operacin de cambio de maysculas a
minsculas y viceversa, escogida por el usuario, los escribir en un segundo fichero.
0. Salir
11. Crear una base de datos almacenada en un fichero para personal universitario. Cada
elemento de la base de datos constar de 3 campos: Nombre, apellido y edad.
Adicionalmente, ser necesario crear otro programa que lea los registros de la base de
datos y los muestre secuencialmente por pantalla.
12. Escribir un programa que haga una conversin de un tipo de formato de fichero a otro. El
formato de partida ser el siguiente:
Matrcula 8 caracteres
Cilindrada entero
Potencia entero
Modelo 10 caracteres
Marca 10 caracteres
13. Una entidad bancaria posee en un fichero la siguiente informacin para un conjunto de
personas:
Nombre.
Nmero de cuenta.
Crdito solicitado.
El primero de ellos escribir en disco la tabla peridica. Por cada elemento de la tabla
peridica se guardar la siguiente informacin:
El segundo de ellos leer el fichero con la tabla peridica introducido con el programa
anterior y presentar un men con las siguientes opciones.
La opcin 1 mostrar un listado con todos los elementos de la tabla peridica, parando la
ejecucin cuando se llene una pantalla para permitir verlos todos.