Ejercicios de Programacion

Embed Size (px)

Citation preview

EJERCICIOS

EJERCICIOS DE PROGRAMACIN

PROBLEMAS SECUENCIALES

1. Escriba un programa que solicite al usuario que introduzca dos nmeros y obtenga e imprima la suma, el producto, la diferencia, el cociente y el mdulo de los dos nmeros.

2. Leer la entrada de dos nmeros y mostrar el doble producto del primero menos la mitad del segundo.

3. Lea su nombre, apellido paterno, apellido materno y matricula, y escrbala en un solo rengln, separando con tabuladores:

090101JUANLOPEZPEREZ

4. Escribir un programa para lea un flotante que represente un nmero de grados Celsius, y la imprima como el flotante equivalente en grados Fahrenheit. La salida debe ser de la siguiente forma:

100.0 grados Celsius son 212.0 grados Fahrenheit.

5. Dados ciertos centmetros como entrada de tipo flotante, imprimir su equivalencia a pies (enteros) y pulgadas (flotante con 1 decimal). Considerar como 2.54 centmetros por pulgada, y 12 pulgadas por pie. Por ejemplo, si la entrada es 333.3, el formato de la salida deber ser:

333.3 centmetros son 10 pies 11.2 pulgadas.

6. Escriba un programa que solicite al usuario dos enteros e imprima al mayor de ellos seguido de la frase es el mayor..

7. Escriba un programa que imprima un recuadro, un ovalo, una flecha y un diamante, como sigue:

********* *** * ** * * * *** * * * ** * ***** * ** ** * * * ** ** * ** ** ** * * * ** ** * * * ** * * * * * * ********* *** * *

8. Escriba un programa que reciba un nmero entero de 5 dgitos y separe el nmero en sus dgitos individuales escribindolos en diferentes renglones, por ejemplo, si el usuario escribe 42389, el programa deber imprimir:42389 Sugerencia: Utilice los operadores de divisin y mdulo. 9. Escriba un programa que solicite al usuario tres nmeros diferentes y a continuacin imprima el ms pequeo y el ms grande de esos nmeros (sugerencia: utilice el operador ternario, dado que slo se cuenta con proposiciones secuenciales)

10. Escriba un programa que reciba un nmero y escriba su tabla de multiplicar, usando tabuladores, por ejemplo, si el usuario introduce el 4, el programa debe imprimir:

4x1=44x2=84x3=124x4=164x5=204x6=244x7=284x8=324x9=364x10=40

nicamente se estarn empleando proposiciones secuenciales.

PROBLEMAS CON ESTRUCTURAS DE SELECCIN

11. Escriba un programa que lea dos nmeros enteros y, si el primero es menor que el segundo, que imprima el mensaje Arriba"; si el segundo es menor que el primero, que imprima el mensaje Abajo"; si los nmeros son iguales, que imprima el mensaje igual".

12. Realice un programa que indique a un cajero de una tienda departamental si un cliente excede o no su lmite de crdito. El lmite se excede si la suma del saldo actual con el pago a realizar es mayor al crdito del cliente.

Por ejemplo, si el Crdito es de $ 5000.00 y el saldo actual es de $3500.00, si un cliente intenta pagar $2000.00, el programa le debe decir: LIMITE EXCEDIDO. Pero si intenta pagar $1000.00, el programa debe decir: OPERACIN AUTORIZADA.

13. Desarrolle un programa que lea un valor entero entre 1 y 7, suponga que el nmero es un da de la semana: 1 corresponde a domingo, 2 a lunes, y as sucesivamente. Imprima el nombre del da o un mensaje de error si el nmero es mayor que 7.

14. Una empresa de ventas semanalmente paga a sus empleados un sueldo fijo ms las comisiones por ventas, la comisin sobre las ventas es del 5% si la cantidad vendida fue menor a $5000.00, el 8% si vendi entre $5000.00 y $10,000 y el 10% si vendi $10,000 o ms. Escriba un programa que reciba el sueldo base de un empleado y sus ventas de una semana, y devuelva su sueldo semanal.

15. La comisin del agua cobra por metros cbicos el consumo de los usuarios. A $3.00 por m3 dentro de los primeros 10 m3, entre los prximos 10 hay un costo adicional de $0.50 y para los que se consuman despus de 20 m3 hay un costo adicional de $0.75, los costos adicionales son por m3. Realizar un programa que reciba la cantidad de m3 de un usuario y devuelva la cantidad que debe pagar.

16. Una empresa paga por horas a sus empleados, pagando tiempo normal en las primeras 40 horas de trabajo y tiempo y medio por todas las horas en exceso de 40 horas. Escriba un programa que reciba el nmero de horas que trabajo un empleado y su pago por hora, y devuelva el salario de ese empleado.

17. Escriba un programa que proporcione la solucin de una ecuacin cuadrtica, es decir, una ecuacin del tipo: a x2 + b x + c = 0. Recuerde que este tipo de ecuaciones se resuelven con la frmula general para ecuaciones cuadrticas y considere que existen tres posibles soluciones, dependiendo del discriminante.

18. Escriba un programa que proporcione la solucin de un sistema de ecuaciones lineales con 2 incgnitas, un sistema del tipo: a1 x + b1 y = c1 y a2 x + b2 y = c2. Notifique si no es posible encontrar la solucin.

19. Escriba un programa que lea dos caracteres, los interprete como dgitos hexadecimales y muestre su valor en decimal. El programa debe aceptar letras maysculas y minsculas para los valores del 10 al 15 y debe enviar un mensaje de error para caracteres que no representan dgitos en hexadecimal.

20. Dados como entrada 3 enteros representando la fecha como da, mes y ao, realice un programa que imprima la fecha del da anterior. Por ejemplo, para una entrada como: 1 3 1992 La salida ser:

Fecha anterior a 1-3-1992 es 29-02-1992.

Suponga que se introducir una fecha correcta y considere la posibilidad de aos bisiestos.

21. Realice un programa que reciba como entrada 3 enteros representando la hora actual en hora, minutos y segundos e imprima la hora en el segundo siguiente. Por ejemplo, para una entrada como: 1 59 59, la salida ser:

La hora siguiente a 1:59:59 es 2:0:0.

Suponga que se introducir una hora correcta en un formato de 1 a 12 horas (de 12:59:59 sigue 1:0:0).

PROBLEMAS QUE REQUIEREN ESTRUCTURAS REPETITIVAS

22. Leer n calificaciones y obtener el promedio. Donde el valor de n debe ser proporcionado por el usuario.

23. Leer una secuencia de calificaciones y obtener el promedio, el fin de la secuencia se determina cuando el usuario introduce -1 (centinela).

24. Calcular la suma de los nmeros enteros existentes en un rango definido por el usuario. El usuario debe proporcionar el lmite inferior y el lmite superior del rango. El programa debe asegurar que el lmite inferior es menor que el superior.

25. Leer n nmeros enteros y mencionar cuantos son positivos y cuantos negativos, n deber ser proporcionado por el usuario.

26. Leer n nmeros enteros y mencionar cuantos son pares y cuantos impares, n deber ser proporcionado por el usuario.27. Determinar si un nmero entero positivo es primo o no.

28. Calcular el factorial de un nmero entero positivo n.

29. Realizar la suma de todos los nmeros pares en el intervalo de 0 hasta un mximo proporcionado por el usuario, incluyendo el valor mximo si es un nmero par.

30. Realizar la suma de todos los nmeros impares en el intervalo de 0 hasta un mximo proporcionado por el usuario, incluyendo el valor mximo si es un nmero impar.

31. Contar el nmero de caracteres que introduzca el usuario, antes de teclear al carcter $.

32. Leer una secuencia de enteros positivos terminada con un nmero negativo, y como resultado, mostrar el nmero mayor, el nmero menor y cuantos nmeros se introdujeron antes de haber ledo un nmero negativo.

33. Escribir un programa que muestre un nmero generado en forma aleatoria y luego escriba la frase Desea continuar (S/N)?, esta tarea se repetir hasta que la respuesta sea N o n.

34. Imprimir todos los nmeros primos en el intervalo [1, 200].

35. Calcular los n primeros mltiplos del 3 (incluyendo al 3), donde el valor de n debe ser introducido por teclado. Modificar el problema para calcular los n primeros mltiplos del nmero k, con n y k introducidos desde el teclado.

36. Leer el peso de los alumnos de una preparatoria y determinar cuntos pesan: Menos de 50 kilos, Entre [50, 60] kilos, Entre (60,70] kilos, Ms de 70 kilos. El fin de la lectura de pesos se indica con -1 (centinela).

37. Dado un nmero entero entre 1 y 15, imprima su tabla de multiplicar, por ejemplo, para el 4:

1234********1*12342*24683*369124*481216

38. Leer las calificaciones del grupo del curso Lgica de Programacin e indicar cuantos fueron aprobados y cuantos reprobados. Primero se debe leer el nmero de estudiantes en el grupo.

39. Calcular el n-simo trmino de la serie de Fibonacci definida por:F0 = 0, F1 = 1, F2 = F1 + F0 = 1 + 0, Fn = Fn-1 + Fn-2 para n >= 2. (n es proporcionado por el usuario).

40. Escriba un programa que realice una operacin aritmtica sobre dos nmeros reales que inicialmente deben tener 1.0, la operacin se debe seleccionar con un cdigo, de acuerdo con la siguiente relacin:[1]Modificar los nmeros[2]Sumar los nmeros y mostrar el resultado[3]Restar el segundo nmero del primero y mostrar el resultado[4]Multiplicar los nmeros y mostrar el resultado[5]Dividir el primero entre el segundo y mostrar el resultado[6]TerminarEl programa debe continuar su ejecucin hasta que se teclee la opcin 6.

41. Una estacin climtica proporciona un par de temperaturas diarias (mxima, mnima) (no es posible que una o ambas temperaturas sea menor a 10 grados centgrados). La pareja que marca el fin de introduccin de datos de las temperaturas es 0,0. Se pide determinar de manera independiente el promedio de las temperaturas mximas y el de las mnimas, el nmero de errores y el porcentaje que representan

42. Una compaa de seguros tiene contratados a n vendedores. Cada uno hace m ventas a la semana. Su poltica de pagos es que un vendedor recibe un sueldo base semanal de $500.00 y un 10% extra por comisiones de sus ventas. El gerente de su compaa desea saber cuanto dinero obtendr en la semana cada vendedor.

43. En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que laboran en ella. El salario se obtiene de la siguiente forma: Si el obrero trabaja 40 horas o menos se le paga $20 por hora Si trabaja ms de 40 horas se le paga $20 por cada una de las primeras 40 horas y $25 por cada hora extra.Adems del pago para cada obrero, el programa debe mostrar la cantidad total que ha pagado.

44. En una reunin escolar de padres de familia, se quiere determinar cuntos hombres y cuntas mujeres participaron, contando a las personas conforme van llegando. El programa repetidamente preguntar: lleg un nuevo padre de familia (S/N)? Si la respuesta es S o s se debe solicitar el sexo (M/F). Terminar cuando la respuesta sea N o n.

45. El Depto. de Seguridad Pblica y Trnsito del D.F. desea saber cuntos autos entran a la ciudad de Mxico con calcomana de cada color. Conociendo el ltimo dgito de la placa de cada automvil se puede determinar el color de la calcomana utilizando la siguiente relacin:

DGITOCOLOR 1 2amarilla 3 4rosa 5 6roja 7 8verde 9 0azulEl fin de ingreso de datos se marca cuando el cobrador introduce -1 como ltimo dgito de la placa.

46. Una persona desea invertir su dinero en un banco, el cual le otorga un 0.8% de inters mensual. Cul ser la cantidad de dinero que esta persona tendr al cabo de k meses si la ganancia de cada mes es reinvertida?47. En un supermercado, un cajero captura los precios de los artculos que los clientes compran e indica a cada cliente cul es el monto de lo que deben pagar. Al final del da, le indica a su supervisor cuanto fue lo que cobro en total a todos los clientes que pasaron por su caja.

Despus de introducir el precio de un producto, el sistema debe preguntar si an hay productos del cliente actual.

Despus de que se le indica a un cliente cuanto debe pagar, el sistema debe preguntar si an hay clientes por atender.

48. Cinco miembros de un club contra la obesidad se renen mensualmente para ver si han bajado o subido de peso, desde su ltima reunin. Para esto realizan un ritual de pesaje en donde cada uno se pesa en cuatro bsculas distintas para as tener un promedio de su peso. Si existe diferencia positiva entre este promedio de peso y el peso de la ltima vez que se reunieron, significa que subieron de peso. Pero si la diferencia es negativa, significa que bajaron. Lo que el problema requiere es que por cada persona se imprima un letrero que diga si SUBIO o BAJO de peso y la cantidad de kilos que subi o bajo.

49. Se desea obtener el promedio de los 4 grupos que estn en segundo cuatrimestre; siendo que cada grupo puede tener n alumnos, los alumnos cursan 8 materias y las materias se califican con 2 parciales. El programa debe pedir el nmero de alumnos en cada grupo y sus calificaciones. Lo que va a mostrar es el promedio de cada alumno, el promedio de cada grupo y el promedio de los 4 grupos.

PROBLEMAS CON FUNCIONES

Para los siguientes ejercicios, evale las funciones continuamente, es decir, el programa principal debe escribir la frase Desea continuar (S/N)? despus de evaluar la funcin y terminar hasta que la respuesta sea N o n.

50. Escriba una funcin que reciba un entero y devuelva su cuadrado.

51. Realice una funcin que reciba tres nmeros y devuelva el mayor de ellos.

52. Escriba la funcin par que reciba un nmero entero y devuelva 1 si el nmero es par, o 0 en caso contrario. El programa principal indicar: Nmero Par o Nmero Impar, segn el resultado de la funcin. 53. Escriba la funcin multiplo que reciba un par de nmeros enteros e indique si el segundo es mltiplo del primero, esto se indicar regresando 1. Y se regresar 0 en caso contrario. El programa principal imprimir un mensaje indicando si el segundo nmero fue mltiplo del primero.

54. Escriba una funcin potencia( base, exponente) que devuelva el valor de baseexponente . Por ejemplo potencia( 3, 4 ) = 3*3*3*3. Suponga que exponente es un entero positivo, no cero y base es un entero.

55. Defina una funcin hipotenusa que calcule la longitud de un triangulo rectngulo, cuando es conocida la longitud de los otros dos lados. Utilice la funcin para determinar la hipotenusa de tringulos cuyos lados son proporcionados por el usuario como nmeros positivos en punto flotante (la hipotenusa es del mismo tipo).

56. Escriba una funcin que despliegue en la esquina superior izquierda de la pantalla un cuadro slido de asteriscos, cuyo costado o lado est especificado en un argumento llamado lado, por ejemplo, si lado es 4, la funcin mostrar:* * * ** * * ** * * ** * * *

57. Modifique la funcin creada en el ejercicio anterior para formar el cuadro con base en cualquier carcter que se reciba como un segundo argumento. Por ejemplo, si se recibe 3 y % se debe imprimir :% % %% % %% % %

PROBLEMAS CON FUNCIONES RECURSIVAS

Las funciones siguientes tambin deben evaluarse continuamente.

58. El Mximo Comn Divisor de los enteros x e y es el entero ms grande que divide de forma completa tanto a x como a y. Escriba una funcin recursiva gcd que regrese el mximo comn divisor de x e y. El gcd en forma recursiva se define como sigue: Si y es igual a 0, entonces gcd(x, y) es x; de lo contrario gcd(x, y) es igual a gcd(y, x MOD y), donde MOD es el operador mdulo.

59. Realice una funcin recursiva que calcule el factorial de un nmero.

60. La funcin producto en forma recursiva de a y b, siendo enteros positivos, se define como: Si b es igual a 1 entonces el producto de a y de b es a; en caso, contrario producto(a, b) es igual a a + producto(a, b-1).

61. La serie de Fibonacci se define como:

fibo(n) = n, si n = 0 n = 1, es decir, fibo(0) = 0 y fibo(1) = 1fibo(n) = fibo(n-1) + fibo(n-2), para n mayor o igual a 2.

62. La potencia de dos nmeros enteros positivos pot(a, b) se define como: Si b = 1, entonces pot(a, b) = a, en caso contrario pot(a, b) = a * pot(a, b-1).

63. Desarrolle un programa basado en una funcin recursiva que imprima los movimientos requeridos para el juego de las Torres de Hanoi. El juego consiste en mover n discos de diferentes dimetros de la torre fuente a la torre destino.

Las reglas a seguir son:

Se debe mover un disco a la vez. No es posible colocar un disco sobre otro de dimetro mayor.

La torre de Apoyo es auxiliar para los movimientos, el planteamiento recursivo es el siguiente: Si se van a mover n discos de la torre Fuente a la torre Destino, primero se deben mover n 1 discos de la torre Fuente a la torre Apoyo, luego se mueve el disco nico de Fuente a Destino y finalmente se mueven n 1 discos de la torre Apoyo a la torre Destino.

PROBLEMAS CON VECTORES (ARREGLOS UNIDIMENSIONALES)

64. Escriba un programa que solicite 10 enteros, los almacene en un arreglo y los imprima en orden inverso.

65. Escriba un programa que solicite n enteros, los almacene en un arreglo y los imprima en orden inverso. El valor de n debe ser proporcionado por el usuario con un mximo de 20.

66. Llenar un vector de n elementos, imprimir la posicin y el valor del elemento ms grande almacenado en el vector. Imprima la ltima posicin en caso de existir repeticiones.

67. Llenar un vector de n elementos, imprimir la posicin y el valor del elemento ms pequeo almacenado en el vector. Imprima la primera posicin en caso de existir repeticiones.

68. Escriba un programa que sume dos arreglos de n elementos, en donde n se debe solicitar al usuario con un mximo de 10.

69. Obtenga el promedio de un arreglo de n elementos.

70. Solicite n enteros para almacenarlos en un vector A, con una capacidad mxima de 50 elementos. Disee un algoritmo que escriba SI si el vector est ordenado de manera ascendente o NO si el vector no esta ordenado

71. Solicite n enteros para almacenarlos en un vector A, con una capacidad mxima de 50 elementos. Disee un algoritmo que escriba SI si el vector est ordenado en forma descendente o NO si el vector no esta ordenado

72. Desarrolle un programa que obtenga el Producto Punto de dos Vectores de n elementos.

73. Realice la bsqueda secuencial de un elemento x en un arreglo de n elementos enteros positivos, el programa debe pedir los datos del arreglo y luego en forma repetida debe solicitar el elemento a buscar, terminando cuando el usuario introduce el -1.

74. Realice la bsqueda binaria de un elemento x en un arreglo de n elementos enteros positivos, el programa debe pedir los datos del arreglo y luego en forma repetida debe solicitar el elemento a buscar, terminando cuando el usuario introduce el -1.

75. Desarrolle el programa de Ordenamiento de Burbuja, para un vector de n elementos. El Ordenamiento de Burbuja es un mtodo clsico con n 1 iteraciones y que consiste en ubicar en cada iteracin al elemento mayor de un sub-arreglo cuyo tamao va disminuyendo.

PROBLEMAS SOBRE CADENAS (ARREGLOS DE CARACTERES)

76. Realice una funcin str_lon que devuelva la longitud de una cadena, una cadena es una secuencia de caracteres terminada con el carcter NUL (\0). La cadena debe ser solicitada al usuario.

77. Desarrolle una funcin str_cat que concatene una cadena s2 al final de una cadena s1. Las cadenas s1 y s2 deben ser solicitadas al usuario y se debe mostrar la cadena resultante.

78. Implemente una funcin str_cpy que compare dos cadenas s1 y s2. La funcin debe devolver -1 si s1 es menor que s2, 0 si s1 es igual que s2 y l en caso de que s1 sea mayor que s2. La comparacin se realiza carcter por carcter y termina tan pronto se encuentra una diferencia.

79. Implemente una funcin str_search que busque y determine si una cadena s1 est contenida en una cadena s2. La funcin debe devolver 1 si la cadena s1 est contenida en la cadena s2 y 0 en caso contrario.

PROBLEMAS RECURSIVOS SOBRE ARREGLOS UNIDIMENSIONALES

80. Escribir una funcin recursiva que imprima un arreglo de enteros de tamao n (del elemento 0 al elemento n-1).

81. Escribir una funcin recursiva que imprima un arreglo de enteros de tamao n en orden inverso (del elemento n-1 al elemento 0).

82. Escribir una funcin recursiva que sume los elementos de un arreglo de tamao n.

83. Escriba una funcin recursiva que implemente una bsqueda secuencial en un arreglo de n elementos.

84. Escriba una funcin recursiva que implemente una bsqueda binaria en un arreglo de n elementos.

85. Escriba una funcin recursiva que implemente el mtodo ordenamiento rpido (qsort).

86. Escriba una funcin recursiva que imprima una cadena en orden inverso.

87. Escriba una funcin que reciba una cadena y regrese uno si la cadena es palndromo y cero en caso contrario.

PROBLEMAS CON MATRICES (ARREGLOS BIIDIMENSIONALES)

88. Escriba un programa que solicite los elementos de una matriz de 4 x 5 elementos e imprima la matriz original y la matriz transpuesta.

89. Escriba un programa que solicite los elementos de una matriz de n x m elementos e imprima la matriz original y la matriz transpuesta. El valor de n y m debe solicitarse al usuario, con un mximo de 10.

90. Desarrolle un programa que sume 2 matrices de n x m, solicitando los valores de n, m y los elementos de cada matriz. El programa debe mostrar las matrices a sumar y la matriz resultante.

91. Realice un programa que recorra una matriz para buscar un elemento e indique el rengln y la columna en donde fue localizado o una notificacin de que el elemento no est en la matriz.

92. Sume todos los elementos de una matriz y muestre el resultado de la suma.

93. Encuentre el valor mximo en una matriz y muestre su valor, as como el rengln y la columna en donde haya sido encontrado, muestre la ltima aparicin, en caso de repeticiones.

94. Encuentre el valor mnimo en una matriz y muestre su valor, as como el rengln y la columna en donde haya sido encontrado, muestre la primera aparicin, en caso de repeticiones.

95. Obtenga el promedio de los elementos de una matriz de n x m.

96. Hallar el promedio por renglones.

97. Hallar el promedio por columnas.

98. Realice el producto de 2 matrices, una de m x n y la otra de n x k, los valores de n, m y k deben ser solicitados al usuario. Limitando a un mximo de 10 para todos los casos.

PROBLEMAS RECURSIVOS SOBRE MATRICES

99. En un tablero de Ajedrez, es posible que un caballo recorra todas las casillas partiendo de cualquier posicin. Realice un programa, basado en una funcin recursiva, que reciba una posicin inicial y muestre el recorrido que realizara un caballo para recorrer todo el tablero.

100. En un tablero de Ajedrez, es posible acomodar 8 reinas sin que se ataquen entre ellas. Realice un programa, basado en una funcin recursiva, que reciba la posicin de una reina y coloque a las 7 reinas restantes en el tablero.