Ejercicios Programación

Vamos a practicar los algoritmos con los siguientes ejercicios:

1. Hacer un programa que sume dos números leídos por teclado y escribir el resultado.

2. Modificar el anterior pero para sumar 10 números leídos por teclado.

3. Modificar el anterior para que permita sumar N números. El valor de N se debe leer previamente por teclado.

4. Elabora un programa que convierta un x número de galones en litros, ten en cuenta que hay 3.7854 litros en un galón

5. Modifica el programa para que imprima una tabla de conversión desde 1 hasta 100 galones, cada 10 galones imprimirá una línea de salida en blanco.

6. La gravedad de la Luna es de alrededor del 17% de la Tierra. Escribe un programa que calcule su peso efectivo en la Luna.

7. Elabora un programa que solicite la medida en Pies y realice la conversión a pulgadas, yardas, cm y metros. Toma en cuenta que un pie tiene 12 pulgadas y una pulgada equivale a 2.54 cm.

8. Hacer un programa que permita escribir los primeros 100 números pares.

9. Hacer el programa que sume los N primeros impares. Realizar después uno que haga lo mismo con los pares y, otro, con los múltiplos de 3.

10. La sucesión de Fibonacci se define de la siguiente forma: a1=1, a2=1 y an=an-1+an-2 para n>2, es decir los dos primeros son 1 y el resto cada uno es la suma de los dos anteriores, los primeros son: 1, 1, 2, 3, 5, 8, 13, 21, ... Hacer un diagrama de flujo para calcular el Nésimo término de la sucesión.

11. Hacer un diagrama de flujo que simule un reloj.

12. Realizar el diagrama de flujo para resolver una ecuación de segundo grado, teniendo en cuenta las soluciones complejas.

13. Hacer un organigrama que calcule el total de una factura, partiendo de una lista de parejas importe, iva. La lista finaliza cuando el importe sea 0. El iva puede ser el 4%, el 7% o el 16%, en cualquier otro caso se rechazan importe e iva y se deben introducir de nuevo.

Finalmente hay que realizar un descuento, en función de la suma de los importes, dicho descuento es del 0% si es menor que 1000, es del 5% si es mayor o igual que 1000 y menor que 10000 y es de un 10% si es mayor o igual que 10000. El descuento se debe aplicar a la suma de los importes y a la suma de los ivas.

Para acabar se debe imprimir el importe y el iva resultantes (total menos descuento) y la suma de ambos.

14. Hacer un organigrama que lea N números, calcule y escriba la suma de los pares y el producto de los impares.

15. Hacer un diagrama de flujo para calcular el máximo común divisor de dos números enteros positivos N y M siguiendo el algoritmo de Euclídes, que es el siguiente:

1. Se divide N por M, sea R el resto.

2. Si R=0, el máximo común divisor es M y se acaba.

3. Se asigna a N el valor de M y a M el valor de R y volver al paso 1.

¿Por qué el método anterior acaba alguna vez? ¿por qué calcula el máximo común divisor de N y M?

16. Calcular los números primos hasta el N, según la Criba de Eratóstenes, que consiste en poner todos los números del 2 al N en una tabla e ir tachando los múltiplos de cada número, detalladamente es como sigue:

1. Escribir los números del 2 al N.

2. Hacer I igual a 2

3. Mirar el número I de la tabla.

4. Si esta tachado ir al paso 6.

5. Si no lo esta tachar los múltiplos de I en la tabla.

6. Incrementar I.

7. Si I es menor o igual que N ir al paso 3.

8. En otro caso finalizar.

El punto 5 también requiere un algoritmo, que es el siguiente:

5.1 Hacer J igual al doble de I (primer múltiplo de I).

5.2 Si J es mayor que N finalizar (el apartado 5).

5.3 En otro caso tachar el elemento J.

5.4 Incrementar J en I (para pasar al siguiente múltiplo de I).

5.5 Volver a 5.2.

Para realizarlo se simulará la tabla con números tachados mediante un array P, y el elemento I estará sin tachar cuando P(I) sea 1 y tachado cuando sea 0.

13. Hacer el diagrama de flujo para calcular el factorial de N (N!=1·2·3·...·N).

14. Hacer un diagrama de flujo para sumar los N primeros términos de una progresión geométrica de primer término A y razón R (dados por teclado). Se debe realizar la suma sin emplear la fórmula que existe para ello.

15. Hacer un diagrama de flujo para convertir un número decimal N dado por teclado a binario.

16. Hacer un diagrama de flujo para calcular AB, siendo B un entero, nótese que B puede ser 0 ó negativo. No se pueden emplear logaritmos.

17. Hacer un diagrama de flujo para calcular el máximo de N números leídos por teclado, se debe realizar de dos formas, una almacenando previamente los números dados por teclado en un array y la otra calculando el máximo directamente según se leen los números del teclado.

18. Hacer un diagrama de flujo para ordenar N números leídos por teclado y almacenados en un array A. El algoritmo es el siguiente:

1. Se lee N y después los N números al array A.

2. Se busca el máximo de los elementos del 1 al N y su índice J.

3. Se intercambian los elementos A(J) y A(N).

4. Se decrementa N en 1.

5. Se compara N con 1, si es mayor se vuelve a 2.

6. Si es menor o igual se termina.

19. Hacer el organigrama de un programa que dado un array A ordenado de N elementos, encuentre la posición de uno B leído por teclado.

El algoritmo a emplear es el siguiente:

1. Se fijan los extremos de la porción a buscar: I=1, J=N.

2. Se calcula el índice del elemento medio K=(I+J)/2.

3. Se compara B con el elemento medio A(K).

4. Si es igual se escribe K y se termina.

5. Si es mayor se cambian los extremos a I=K+1, J=N y se vuelve a 2.

6. Si es menor se cambian los extremos a I=1, J=K-1 y se vuelve a 2.

Pensar después que habrá que modificar para que busque también valores de B que no estén en el array A, si se da ese caso y no lo encuentra debe poner un mensaje diciendo que no esta.

20. Hacer un organigrama de un programa que adivine el número entre 1 y 1000 pensado por un humano. El programa debe ir diciendo números y el humano responderá con los símbolos '<', '>' o '=', según el número pensado sea menor, mayor o igual que el dicho por el ordenador. Cuando lo adivine deberá poner un mensaje especificando cuantas preguntas ha necesitado y finalizar. No debe realizar más de 10 preguntas y debe detectar si el humano le engaña diciéndole cosas imposibles, por ejemplo es mayor que 4 y menor que 5.

Si en lugar de estar el número de partida entre 1 y 1000 estuviera entre 1 y 1000000, ¿cuantas preguntas serían necesarias?

21. Realizar el organigrama de un programa que permita calcular ceros de funciones empleando el Teorema de Bolzano (si una función continua, definida en un intervalo cerrado [a,b], toma valores de signos opuestos en los extremos, existe un punto c en [a,b] tal que f(c)=0). Los datos de partida son los extremos del intervalo a y b y E que nos dice el máximo error tolerado en el resultado. El programa deberá poner un mensaje de error si la función tiene igual signo en los extremos del intervalo, en otro caso debe escribir un valor C, que diste del c del Teorema en menos de E.

22. Dados dos números enteros positivos N y D, se dice que D es un divisor de N si el resto de dividir N entre D es 0. Se dice que un número N es perfecto si la suma de sus divisores (excluido el propio N) es N. Por ejemplo 28 es perfecto, pues sus divisores (excluido el 28) son: 1, 2, 4, 7 y 14 y su suma es 1+2+4+7+14=28. Hacer un organigrama que dado un número N nos diga si es o no perfecto.

23. Un año es bisiesto si es múltiplo de 4, exceptuando los múltiplos de 100, que sólo son bisiestos cuando son múltiplos además de 400, por ejemplo el año 1900 no fue bisiesto, pero el año 2000 si lo será. Hacer un organigrama que dado un año A nos diga si es o no bisiesto.

24. Hacer un organigrama que dados un día D, un mes M y un año A, calcule cual es el día siguiente. Se debe tener en cuenta que en los años bisiestos Febrero tiene 29 días y en los no bisiestos 28.

25. El Miércoles de Ceniza es 46 días antes que el Domingo de Resurrección. Hacer un organigrama para que dados el día D, el mes M y el año A del Domingo de Resurrección calculela fecha del Miércoles de Ceniza en ese año. Se debe tener en cuenta si el año es o no bisiesto.

26. Hacer un organigrama que lea un número N y obtenga las ternas pitagóricas (A, B, C) en las que A, B y C son todos enteros positivos y menores que N. Para que una terna (A, B, C) sea pitagórica debe cumplir que A2+B2=C2.

27. Una empresa paga a sus 100 operarios semanalmente, de acuerdo con el número de horas trabajadas, a razón de P pesetas por hora y de 1.5·P pesetas por cada hora extra. Las horas extras son las que exceden de 40h. Hacer el organigrama que dado el número de horas trabajadas y el valor de P calcule el salario que le corresponde.

28. Disponemos de una máquina que puede dar vueltas con 5 tipos de monedas distintas: 100, 50, 25, 5 y 1 pts. Realizar el organigrama de un programa que dados el precio del artículo y la cantidad entregada por el consumidor nos indique la vuelta a entregar empleando el menor número posible de monedas.

29. Plantear el organigrama de un programa que sea capaz de calcular el impuesto sobre la renta el número de veces que sea necesario y lo escriba por impresora. El impuesto de la renta es el 15% del salario anual de cada persona, al que previamente se debe realizar una deducción en función del número de hijos, que es del 0% si tiene 0, del 5% si tiene 1 o 2 y del 15% si tiene más de 2.

30. Realizar un organigrama para leer por teclado las notas de N alumnos que están matriculados en M asignaturas, si un alumno no esta matriculado de una asignatura o no se presenta al examen se debe introducir como nota -1. El programa debe calcular y escribir el número de alumnos presentados a cada asignatura, la nota media, el número de suspensos, el número de aprobados, el número de notables y el número de sobresalientes.

31. Hacer el organigrama para resolver el siguiente problema: Un hombre, un lobo, una cabra y una gallina deben pasar un río, para ello se dispone de una barca con capacidad para dos ocupantes, el hombre (único que sabe remar) y otro. Si en una orilla se quedan solos el lobo y la cabra, el lobo se come a la cabra. Si en una orilla se quedan solos la cabra y la gallina , la cabra se come la gallina.

32. Elabora un programa que calcule la suma de dos arreglos unidimensionales, suponiendo que sus valores corresponden a la suma del salario quincenal de un empledo más las prestaciones del mes, por lo que obtendremos el salario integral del trabajador con la suma.

33. Elabora un programa que medante funciones y un menú, el usuario seleccione las unidades a convertir (deberás utilizar apuntadores para manipular los valores de las variables), por ejemplo con la temperatura en grados Fahrenheit, imprimiras su equivalente en grados Celsius, Kelvine y Rankine. Para convertir a Celsius a la temperatura Fahrenheit se le restan 32 y se multiplican por 5/9

Para convertir a Kelvin se le suma 273 a los grados Celsius. Para convertir a Rankine a los grados Fehrenheit se le suma 460. La función deberá realizar las conversiones a las restantes unidades.

34. Una empresa paga a sus 5 trabajadores semanalmente, de acuerdo con el número de horas trabajadas, a razón de x pesos por hora y al doble x pesos por cada hora extra. Las horas extras son las que exceden de 40h. Hacer el programa que dado el número de horas trabajadas y el valor de x, calcule el salario que le corresponde a cada trabajador.

El programa mostrará al final el total a depositar en el banco.

35. Realiza un programa que simule la venta de boletos en Cinemex, el usuario seleccionará la película a ver, el número de boletos a comprar, supongamos que el complejo cuenta con 5 salas de exhibición.

Crea una clase independiente para cada Películay un método para ser llamado por una clase Principal llamada Taquilla

Debemos recordar que los Miércoles la entrada cuesta 45 pesos mismo precio que pagan los estudiantes, los mayores de 60 años y menores de 12 pagan $42 pesos, Funciones antes de las 18:00 hrs. Cuestan $52, funciones después de las 18:00 cuestan $65. Pantalla Digital 3D $80

El trabajador del cine preguntará el número de personas, adultos, niños, adultos mayores. Tipo de sala, normal o 3D. Dependiendo de la selección obtenemos el total a pagar, mismo que se va a ir almacenando en un acumulador

El programa realizará las ventas de manera recursiva hasta que el usuario meta un carácter de salida. Cuando suceda esto mostrará los totales por sala en pesos y el total de boletos vendidos también por sala.

36. Crea un programa en java para realizar recargas de tiempo aire de las diferentes compañías telefónicas UNEFON, TELCEL, MOVISTAR (Crea una clase independiente para cada compañia y un método para ser llamado por una clase Principal), el programa deberá de contar con los siguientes puntos:

  1. Un menú para seleccionar a las compañías telefónicas

  2. Al seleccionar a la compañía del menú el programa pedirá:

2.1 La cantidad a ser abonada en pesos

2.2 Solicitara el numero celular para abonarle el saldo indicado

2.3 Solicitara que se confirme el numero celular

2.4 Si los números son validados aparecerá en la pantalla usted abono $ X pesos al número celular de lo contrario intente nuevamente ingresando el numero celular (Deberán existir precargados 3 números celulares)2.5 Esta misma validación para todas las compañías telefónicas (Diferentes números)

3. El programa terminará con opción *3

4. Al finalizar el programa mostrará las cantidades abonadas a los distintos números

37. Realizar un programa en lenguaje C++ que realice la siguiente funcionalidad de ordenar los siguientes números 9, 25, 4, 5, 120, 65, 98

Considerar los siguientes puntos

a) Considerar dos opciones mediante funciones. En la primera los datos son solicitados por tecleado y la segunda los datos se encuentran inicializados desde el mismo programa

b) Aplicar el método un método de ordenamiento

38. Realizar un programa en lenguaje C++ que realice las 4 operaciones básicas con 2 matrices unidimensionales

Considerar los siguientes puntos

a) Crea una librería llamada Operaciones y en ella elabora las 4 funciones utilizando por lo menos 2 diferentes tipos de declaraciones en las funciones

b) Crea un menú en otro archivo y realiza el llamado de las funciones con un Switch.

39.

· Clase principal con menú y conexiones a los métodos de las otras clases (2 pts.)

· Subclases (1.5 pts.)

· Creación de Objetos (0.5 pts.)

· Métodos de cada subclase Set, Get (2 pts.)

___________________________________________________________________________________

El Sistema Imperial (usa yardas, pies, pulgadas, etc. para medir longitudes) se utilizó durante cientos de años en el Reino Unido.

Los franceses desarrollaron el Sistema Métrico (metros) en 1670, que se extendió rápidamente por Europa, incluso en Inglaterra en 1963.

Pero en EEUU y algunos otros países se siguen utilizando los pies y las pulgadas.

Ejemplo 1: Convierte 500 milímetros a pulgadas: 500 mm x 0.03937 = 19.7 pulgadas

Ejemplo 2: Convierte 500 milímetros a pies: 500 mm x 0.03937 = 19.7 pulgadas, y hay 12 pulgadas en un pie, así que son 19.7/12=1.64 pies (o 1 pie y 7.7 pulgadas)

________________________________________________________________________________

Elabora un programa que mediante un menú, el usuario seleccione una unidad a convertir y realice la conversión a las unidades que aparecen abajo, crea subclases para cada tipo de medición y los respectivos métodos de conversión de cada una, realiza las conexiones hacia la clase principal mediante objetos para cada clase.

Utiliza la tabla de conversión Longitud para conocer los equivalentes

En cada clase utiliza métodos get y set.

Setters: Del Inglés Set, que significa establecer, nos sirve para asignar un valor inicial a un atributo, pero de forma explícita, además el Setter nunca retorna nada (Siempre es void), y solo nos permite dar acceso público a ciertos atributos que deseemos el usuario pueda modificar.

Getters: Del Inglés Get, que significa obtener, pues nos sirve para obtener (recuperar o acceder) el valor ya asignado a un atributo y utilizarlo para cierto método.

40.

· Clase principal con menú y conexiones a los métodos de las otras clases (2 pts.)

· Subclases (1.5 pts.)

· Creación de Objetos (0.5 pts.)

· Métodos de cada subclase Set, Get (2 pts.)

___________________________________________________________________________________

El Sistema Imperial (usa granos, onzas, libras, etc. para medir longitudes) se utilizó durante cientos de años en el Reino Unido.

Los franceses desarrollaron el Sistema Métrico (metros) en 1670, que se extendió rápidamente por Europa, incluso en Inglaterra en 1963.

Pero en EEUU y algunos otros países se siguen utilizando las onzas y libras.

Ejemplo 1: Convierte 500 gramos a onzas: 500 gr x 0.0353 = 17.65 onzas

________________________________________________________________________________

Elabora un programa que mediante un menú, el usuario seleccione una unidad a convertir y realice la conversión a las unidades que aparecen abajo, crea subclases para cada tipo de medición y los respectivos métodos de conversión de cada una, realiza las conexiones hacia la clase principal mediante objetos para cada clase.

Utiliza la tabla de conversión Longitud para conocer los equivalentes

En cada clase utiliza métodos get y set.

Setters: Del Inglés Set, que significa establecer, nos sirve para asignar un valor inicial a un atributo, pero de forma explícita, además el Setter nunca retorna nada (Siempre es void), y solo nos permite dar acceso público a ciertos atributos que deseemos el usuario pueda modificar.

Getters: Del Inglés Get, que significa obtener, pues nos sirve para obtener (recuperar o acceder) el valor ya asignado a un atributo y utilizarlo para cierto método.