Ejercicios de programación -...

5
Ejercicios de programación Tema: Métodos y mensajes Instrucciones: Elabore los programas que se indican utilizando en cada uno al menos un método o método miembro diferente al main. 1. Diseñar un método que calcule el promedio de varios números introducidos por el teclado. Hacer dos versiones, una para un número fijo de valores y otra para un número cualquiera de valores. 2. Escribir una método que intercambie el valor de dos variables, es decir si X=5 e Y=7 tras aplicar el método, por ejemplo haciendo "intercambiar(X,Y)" se tiene que X=7 e Y=5. 3. Diseñar un método que calcule la potencia enésima de un número, es decir que calcule X n para X, real y n entero. 4. Diseñar un método "aMayusculas()" que convierta una cadena de texto en mayúsculas. Nota no utilice el método de la clase String. 5. Diseñar dos métodos "EurosAPesetas()" y "PesetasAEuros()" que realicen las conversiones de monedas de forma que se puedan utilizar directamente dentro de una expresión del tipo: "Imprimir valEuros son EurosAPts(valEuros)" . 6. Haga un programa que calcule el desglose de moneda de nómina de una compañía. El programa deberá de recibir una cierta cantidad de salarios S por teclado, correspondiente al sueldo de un trabajador (sin decimales, p.ej. 12345), que el programa determine su "desglose de moneda" (cuantos billetes y monedas de cada denominación son necesarios para pagar el sueldo) en los billetes de 1000, 500, 200, 100, 50 y 20; así como también con las monedas de 10, 5, 2 y 1 pesos. Deberá de desplegarse una "tabla" con las cantidades resultantes de cada billete y moneda. Después de calcular el desglose de cada salario, que se haga una pausa y volver a solicitar el siguiente salario hasta que se teclee la clave de fin de proceso que será un cero en el salario. Nota: habrá que tener variables contadoras para cada denominación pues, justo antes de salir, se requiere que el programa despliegue la tabla sumaria del total de billetes y monedas de cada denominación necesarios para pagar la totalidad de la nómina de la compañía. 7. Diseñar un método "EsBisiesto()" que decida si un año es bisiesto o no. 8. Escribir un método "EsMultiplo" que sirva para determinar si un número es múltiplo de otra. Utilizarla en un programa que pida la antigüedad de un trabajador y calcule cuantos trienios de antigüedad tiene. 9. Escriba un programa que lea un número de 4 dígitos y separe mediante un método el número en sus dígitos individuales e imprima los dígitos separados unos de otros mediante el tabulador. Si el usuario escribe 1492 el programa debería imprimir 1 4 9 2. 10. Escriba un programa que mediante el uso de dos métodos calcule los cuadrados y los cubos de los números del 1 al 10. 11. Escriba un programa que calcule la suma de los primeros 10 números enteros. 12. Realizar un método llamado calcular_dias_mes al que se le pasa como parámetro un mes y un año y nos deuelve los días que tiene dicho mes. 13. Realizar un subprograma o método llamado cantidad_de_divisores al que se le pase como parámetro un número entero y devuelva el número de divisores o bien cero si el número es negativo. 14. En razón del alto precio de la gasolina, los automovilistas están preocupados con el kilometraje que obtienen de sus automóviles. Suponiendo que un conductor

Transcript of Ejercicios de programación -...

Ejercicios de programación Tema: Métodos y mensajes

Instrucciones: Elabore los programas que se indican utilizando en cada uno al menos un método o método miembro diferente al main.

1. Diseñar un método que calcule el promedio de varios números introducidos por el teclado. Hacer dos versiones, una para un número fijo de valores y otra para un número cualquiera de valores.

2. Escribir una método que intercambie el valor de dos variables, es decir si X=5 e Y=7 tras aplicar el método, por ejemplo haciendo "intercambiar(X,Y)" se tiene que X=7 e Y=5.

3. Diseñar un método que calcule la potencia enésima de un número, es decir que calcule Xn para X, real y n entero.

4. Diseñar un método "aMayusculas()" que convierta una cadena de texto en mayúsculas. Nota no utilice el método de la clase String.

5. Diseñar dos métodos "EurosAPesetas()" y "PesetasAEuros()" que realicen las conversiones de monedas de forma que se puedan utilizar directamente dentro de una expresión del tipo: "Imprimir valEuros son EurosAPts(valEuros)" .

6. Haga un programa que calcule el desglose de moneda de nómina de una compañía. El programa deberá de recibir una cierta cantidad de salarios S por teclado, correspondiente al sueldo de un trabajador (sin decimales, p.ej. 12345), que el programa determine su "desglose de moneda" (cuantos billetes y monedas de cada denominación son necesarios para pagar el sueldo) en los billetes de 1000, 500, 200, 100, 50 y 20; así como también con las monedas de 10, 5, 2 y 1 pesos. Deberá de desplegarse una "tabla" con las cantidades resultantes de cada billete y moneda. Después de calcular el desglose de cada salario, que se haga una pausa y volver a solicitar el siguiente salario hasta que se teclee la clave de fin de proceso que será un cero en el salario. Nota: habrá que tener variables contadoras para cada denominación pues, justo antes de salir, se requiere que el programa despliegue la tabla sumaria del total de billetes y monedas de cada denominación necesarios para pagar la totalidad de la nómina de la compañía.

7. Diseñar un método "EsBisiesto()" que decida si un año es bisiesto o no. 8. Escribir un método "EsMultiplo" que sirva para determinar si un número es

múltiplo de otra. Utilizarla en un programa que pida la antigüedad de un trabajador y calcule cuantos trienios de antigüedad tiene.

9. Escriba un programa que lea un número de 4 dígitos y separe mediante un método el número en sus dígitos individuales e imprima los dígitos separados unos de otros mediante el tabulador. Si el usuario escribe 1492 el programa debería imprimir 1 4 9 2.

10. Escriba un programa que mediante el uso de dos métodos calcule los cuadrados y los cubos de los números del 1 al 10.

11. Escriba un programa que calcule la suma de los primeros 10 números enteros. 12. Realizar un método llamado calcular_dias_mes al que se le pasa como

parámetro un mes y un año y nos deuelve los días que tiene dicho mes. 13. Realizar un subprograma o método llamado cantidad_de_divisores al que se le

pase como parámetro un número entero y devuelva el número de divisores o bien cero si el número es negativo.

14. En razón del alto precio de la gasolina, los automovilistas están preocupados con el kilometraje que obtienen de sus automóviles. Suponiendo que un conductor

ha llevado el registro de varios tanques de gasolina, desarrolle un programa que lea los kilómetros manejados y los litros de gasolina utilizados en cada tanque para un automóvil determinado. El programa deberá calcular y desplegar mediante un método los kilómetros por litro obtenidos para dicho automóvil. Después de procesar toda la información de entrada, el programa deberá calcular también el promedio en Kms/lt de todos los tanques de todos los automóviles.

15. Una gran empresa química paga a su personal de ventas en base a comisiones. El personal de ventas recibe $200.00 por semana más 9% de las ventas brutas de la semana. Por ejemplo, una persona de ventas que vende $5000.00 de productos químicos en una semana, recibe $200.00 más 9% de $5000.00, o sea un total de $650.00. Desarrolle un programa en que introduzca las ventas brutas de cada vendedor correspondiente a la última semana y calcule y despliegue las ganancias de dicho vendedor. Procese las cifras vendedor por vendedor utilizando un ciclo.

16. Diseñar un método llamado pasar_a_segundos al que se le den como parámetros una hora de reloj (horas, minutos y segundos) y nos devuelva los segundos totales de esa hora, devolviendo cero si los parámetros no son correctos.

17. Realizar un método que reciba dos horas de reloj ((horas, minutos y segundos), las valide y nos dé la diferencia entre ambas en segundos. En caso de no ser validas que regrese -1.

18. Realizar un programa para determinar las raíces reales de una ecuación de segundo grado de la forma ax ^2 + bx + c = 0.

19. Realizar un programa en el que a partir de una fecha introducida por teclado con el formato DIA, MES AÑO se obtenga la fecha del día siguiente. Se supone que la fecha introducida es correcta.

20. Realizar un programa que averigüe si dados dos números enteros introducidos por teclado, uno es divisor del otro.

21. Hacer un programa que permita aproximar mediante una función eX para valores enteros de X que deberán de leerse desde teclado y estar entre 0 y 15 inclusive (validarlo), usando N términos de la serie:

eX = 1 + X + X2/2! + X3/3! + X4/4! + X5/5! + ... El número N de términos deberá de ser un entero positivo leído por teclado (validarlo) y el programa deberá de seguir pidiendo valores para X hasta que se teclee un valor negativo como clave de fin de archivo ó fin de proceso.

22. Hacer un programa que permita calcular valores de logaritmos naturales mediante un método para valores de X que deberán de leerse por teclado y estar entre 0 y 2 inclusive (validarlo), y para éllo, usar un número N de términos que deberá ser un entero positivo que se recibirá por teclado:

Ln X = (X - 1) - 1/2 (X - 1)2 + 1/3 (X - 1)3 - 1/4 (X - 1)4 + 1/5 (X - 1)5 - ... El programa deberá de seguir pidiendo valores para X hasta que se teclee un valor negativo como clave de fin de proceso.

23. Un palíndromo es un número o una fase de texto, que se lee igual hacia delante y hacia atrás. Por ejemplo, cada uno de los siguientes enteros de cinco dígitos son palíndromos: 12321,55555, 45554 y 11611. Escriba un programa que lea un entero de cinco dígitos y que determine si es o no un palíndromo. (Sugerencia: utilice los operadores de división y de módulo para separar los números en sus dígitos individuales).

24. Introduzca un entero (de cuatro dígitos) que contenga sólo 0s y 1s (es decir, un entero "binario") e imprima su equivalente decimal. (Sugerencia: utilice los operadores de módulo y de división para detectar los dígitos del número

"binario" uno por uno, de derecha a izquierda. Al igual que en el sistema numérico decimal, donde el dígito más a la derecha tiene un valor posicional de 1, y el siguiente dígito a la izquierda tiene un valor posicional de 10, y a continuación de 100, y a continuación de 1000, etc., en un sistema numérico binario, el dígito más a la derecha tiene un valor posicional de 1, el siguiente dígito a la derecha tiene un valor posicional de 2, y a continuación de 4 , y a continuación de 8, etc. Por lo tanto, el número decimal 234 puede ser interpretado como 4 * 1 + 3 * 10 + 2 * 100. El equivalente decimal del número 1101 binario es 1 * 1 + 0 * 2 + 1 * 4 + 1 * 8 o bien, 1 + 0 + 4 + 8, es decir 13). No utilice un método ya realizado en el API de java.

25. Escriba un programa que mediante un método imprima 100 asteriscos, uno por uno. Después de cada décimo asterisco, su programa deberá imprimir un carácter de nueva línea. (Sugerencia: cuente de 1 a 100. Utilice un operador de módulo para reconocer cada vez que el contador llegue a un múltiplo de 10.)

26. Escriba un programa que lea un entero, y mediante un método determine e imprima cuántos dígitos de ese entero son 7s.

27. Una empresa desea trasmitir datos mediante el teléfono, pero están preocupados de que sus teléfonos pudieran estar intervenidos. Todos sus datos se transmiten como enteros de cuatro dígitos. Le han solicitado a usted que escriba un programa que cifre sus datos, de tal forma de que puedan ser transmitidos con mayor seguridad. Su programa debe leer un entero de cuatro dígitos y mediante un método cifrarlo como sigue: reemplazar cada dígito por (la suma del dígito más 7) módulo 10. A continuación, intercambiar el primer dígito con el tercero, y el segundo con el cuarto. A continuación imprimir el entero cifrado. Escriba un programa por separado, que introduzca un entero de cuatro dígitos cifrado, y que lo descifre para formar el número original.

28. Hacer un programa que use un método para calcular el importe a pagar de recibos de energía eléctrica, de acuerdo a lo siguiente: Se deberá de leer por teclado la tarifa del precio por kilowatt-hora al inicio del programa. Posteriormente, leer por teclado un cierto número de parejas de mediciones de la lectura anterior y lectura actual de los recibos (validar que sean números enteros no negativos y que la lectura actual sea mayor que la anterior). El importe de cada pareja se calcula mediante la diferencia entre ambas lecturas multiplicada por la tarifa. Se deberán desplegar en el renglón: la pareja de mediciones, el consumo (diferencia), el importe a pagar, el impuesto (iva) y el importe total del recibo. El programa deberá de hacer una pausa y seguir pidiendo parejas hasta que encuentre la clave de fin de proceso que será un valor cero en la lectura anterior.

29. Implementar una función, Digit(N,num) que devuelva el dígito N-ésimo de un número, teniendo en cuenta que el dígito 0 es el dígito más a la derecha (el menos significativo). La función devolverá -1 si el número no tiene suficientes dígitos. Considere la posibilidad de que N pueda ser un número negativo. Ejemplos:

Digit (0,3456) Devuelve 6 Digit (1,-3456) Devuelve 5 Digit (4,3456) Devuelve -1

30. Utilizar una declaración de tipos para una matriz de números reales de tamaño

DIM´DIM, donde DIM es una constante, declarada como tal, de valor 10. Escribir las siguientes funciones:

a) Función traspuestaM: Acepta una matriz como único argumento y devuelve su matriz traspuesta. b) Función simetricaM: Acepta una matriz como único argumento y devuelve true si dicha matriz es simétrica y false si no lo es. Para averiguar si la matriz es o no simétrica se debe usar la función traspuestaM del apartado anterior. c) Función sumaM: Acepta tres matrices devolviendo en la tercera de ellas la suma de las dos primeras. d) Función restaM: Acepta tres matrices devolviendo en la tercera de ellas la resta de las dos primeras. e) Función multiplicaM: Acepta tres matrices devolviendo en la tercera de ellas la multiplicación de las dos primeras.

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. 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. Escriba un programa que lea una frase escrita en español y mediante un método cifre dicha frase en código Morse y que también lea una frase en código Morse y mediante oto método 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.

33. Realice un programa que lea varias líneas de texto y analice las siguientes características del texto:

a) Imprimir una tabla indicando el número de veces que aparece cada letra del alfabeto en dicho texto. b) Imprimir una tabla que indique el número de palabras de una letra, de dos letras, de tres letras ... que aparecen en el texto. c) Imprimir una tabla indicando el número de ocurrencias de cada palabra distinta en el texto. Para ello supondremos que el texto tiene como máximo 100 palabras distintas, con lo que deberá almacenarlas en un array de Strings de tamaño 100. Cada casilla deberá contener un String con la palabra y en otro arreglo por correspondencia en el índice el número de veces que aparece esa palabra en el texto. El programa deberá mostrar un menú con las siguientes opciones: 1) Introducir texto, 2) Número de instancias de cada letra, 3) Número de palabras de cada longitud, 4) Número de ocurrencias de cada palabra distinta, 5) Salir.

34. Escribir un programa que mediante un método permita visualizar el triángulo de Pascal. En el triángulo de Pascal cada número es la suma de los dos números situados encima de él.

35. Elabore un programa que permita registrar los puntos acumulados por un cliente

en el supermercado. Se deberán leer los precios de los artículos y obtener el total a pagar en el momento en que el precio sea cero. Por cada $40.00 de compra se le dará 1 punto. Al indicar el total de la venta se indicará también el total de puntos y el obsequio que puede llevarse de acuerdo a la siguiente tabla:

Total de puntos Premio 40 puntos Un llavero 80 puntos Una plancha 100 puntos Un auto

• Deberá haber una función que leerá los precios y obtendrá el total,

mismo que será impreso por el programa principal. • Una función que evalúe el total de la venta, que imprima el premio

correspondiente y el total de puntos acumulados.

36. Escribir un programa que implemente 2 métodos: • Convertir un número arábigo a romano. • Convertir un número romano a arábigo.

37. Se realiza un examen tipo test de 20 preguntas. Realizar un método llamado

corregir_pregunta al que se le pasa como parámetro el número de pregunta (de 1 a 20) y la respuesta que ha dado el alumno (a,b,c,d). El subprograma devuelve -1 si los parámetros son erróneos, 0 si la respuesta del alumno es incorrecta ó 1 si la respuesta es correcta. Hacer un programa que permita calcular la nota de un alumno introduciéndole la respuesta a las 20 preguntas y suponiendo que ya está construido el método descrito. Cada pregunta correcta suma 0.5 punos y cada una incorrecta resta 0.2 puntos. Usar un arreglo para almacenar la respuesta correcta de cada pregunta.

38. Realizar un programa que convierta las siguientes magnitudes físicas: a. Kilómetros a millas b. Grados Fahrenheit a grados Celsius