Download ejercicios programacion PDF

Titleejercicios programacion
Tags Function (Mathematics) Quotation Mark C++ Normal Distribution
File Size492.0 KB
Total Pages86
Document Text Contents
Page 1

RELACIÓN DE PROBLEMAS I. Introducción a C++

RELACIÓN DE PROBLEMAS I. Introducción a C++

1. Indique cuáles serán los valores de las variables a y x después de ejecutar el código
siguiente

! "#

$ ! %#

& ! "#

! ' $#

& ! & ' $ ( #

! ' $#

& ! & ' $ ( #

! ' $#

& ! & ' $ ( #

! ' $#

& ! & ' $ ( #

Obsérvese que normalmente no usaremos nombres de variables tan cortos como los
anteriores. Este ejemplo es una excepción, al tratarse de un ejercicio básico.

Finalidad: Ejemplo básico de asignación a una variable del resultado de una expresión.
Dificultad Baja.

2. Cree un programa que pida un valor de intensidad y resistencia e imprima el voltaje
correspondiente, según la Ley de Ohm:

voltaje = intensidad * resistencia

Finalidad: Ejemplo básico de asignación a una variable del resultado de una expresión.
Dificultad Baja.

3. Escriba un programa que lea por pantalla la cantidad en millas (como un real) y mues-
tre la cantidad equivalente en kilómetros. Debe tener en cuenta que % milla equivale a
%)*"+ kilómetros.

Finalidad: Ejemplo básico de asignación a una variable del resultado de una expresión.
Dificultad Baja.

4. Realizar un programa que nos pida una longitud cualquiera dada en yardas. El progra-
ma deberá calcular el equivalente de dicha longitud en pulgadas, pies, millas y millas
marinas, y mostrarnos los resultados en pantalla. Para el cálculo, utilice la siguiente
tabla de conversión del sistema métrico:

Finalidad: Plantear la solución de un ejercicio básico como es el de una doble conver-

sión. Dificultad Baja.

Guión de Prácticas. Fundamentos de Programación RP-I.1

Page 2

RELACIÓN DE PROBLEMAS I. Introducción a C++

1 pulgada= 25,4 milímetros
1 pie = 30,48 centímetros
1 yarda = 0,9144 metros
1 milla = 1609,344 metros
1 milla marina = 1852 metros

5. De !!"#$$%&'(!)*+,!,)-./(0& se obtienen los siguientes datos estimados so-
bre la población de China:

• nace una persona cada 1.87 segundos
• muere una persona cada 3.27 segundos
• emigra una personada cada 71.9 segundos

Escriba un programa que muestre la población dentro de 2 años, considerando que la
población actual es de 1.375.570.814 personas. Los datos de entrada son el número
de años y la población de partida.

Finalidad: Ejemplo básico de asignación a una variable del resultado de una expresión.
Dificultad Baja.

6. Un banco presenta la siguiente oferta. Si se deposita una cantidad de euros %1"/!12
durante un año a plazo fijo, se dará un interés dado por la variable /(!,),-. Realizad
un programa que lea una cantidad %1"/!12 y un interés /(!,),- desde teclado y
calcule en una variable !&!12 el dinero que se tendrá al cabo de un año, aplicando la
fórmula:

!&!12 = %1"/!12 + %1"/!12 ∗
/(!,),-

100

Es importante destacar que el compilador primero evaluará la expresión de la parte
derecha de la anterior asignación (usando el valor que tuviese la variable %1"/!12) y
a continuación ejecutará la asignación, escribiendo el valor resultante de la expresión
dentro de la variable !&!12.

A continuación, el programa debe imprimir en pantalla el valor de la variable !&!12.
Tanto el capital como el interés serán valores reales. Supondremos que el usuario
introduce el interés como un valor real entre 0 y 100, es decir, un interés del 5,4 %
se introducirá como 3.4. También supondremos que lo introduce correctamente, es
decir, que sólo introducirá valores entre 0 y 100.

Supongamos que queremos modificar la variable original %1"/!12 con el nuevo valor
de !&!12. ¿Es posible hacerlo directamente en la expresión de arriba?

Nota: El operador de división en C++ es $

Finalidad: Resolver un problema real sencillo, usando varias sentencias. Dificultad
Baja.

Guión de Prácticas. Fundamentos de Programación RP-I.2

Page 43

RELACIÓN DE PROBLEMAS III. Funciones y Clases

• Construir los constructores necesarios para poder asignar valores a los miembros
de la clase.

• Construir un método que calcule la nota final del alumno. Para ello se debe de
tener en cuenta los porcentajes de las distintas partes consideradas: 70% teoría,
5% parcial 1, 15% parcial 2 y 10% participación.

• Construir un método que calcule la nota final del alumno.
• Construir un programa de prueba.

Finalidad: Familiarizarnos con la definición de clases. Dificultad Baja.

19. En el ejercicio 7 de esta relación de problemas se definieron varias funciones para
operar sobre una progresión geométrica. Definid ahora una clase para representar
una progresión geométrica.

a) Diseñad la clase pensando cuáles serían los datos miembro esenciales que defi-
nen una progresión geométrica, así como el constructor de la clase.

b) Definir un método !"#$%& que devuelva el término k-ésimo.

c) Definid los métodos '(#)*)+,)-%.$%$,&, '(#)*)+,), /(0,$10$2)*)+,).

d) Cread un programa principal que lea los datos miembro de una progresión, cree el
objeto correspondiente y a continuación lea un entero ,&1! e imprima los ,&1!
primeros términos de la progresión, así como la suma hasta ,&1! de dichos
términos.

Finalidad: Comparar la ventaja de un diseño con clases a uno con funciones. Dificultad
Baja.

20. Recuperad el ejercicio 12 de esta relación de problemas sobre la función gaussiana.
En vez de trabajar con funciones, plantead la solución con una clase.

Dificultad Media.

21. Se quiere construir una clase 3!1&+$,&'$#(0)2$&% para simular préstamos, ofre-
ciendo la funcionalidad descrita en los ejercicios 19 (reinvierte capital e interés un
número de años) y 20 (reinvierte capital e interés hasta obtener el doble de la can-
tidad inicial) de la relación de problemas II (página RP-II.7). Por tanto, la clase debe
proporcionar, para un capital y unos intereses dados, métodos para:

a) Calcular el capital que se obtendrá al cabo de un número de años,

b) Calcular el número de años que deben pasar hasta obtener el doble de la canti-
dad inicial.

A la hora de diseñar la clase, tendremos que analizar cuestiones como:

Guión de Prácticas. Fundamentos de Programación RP-III.10

Page 44

RELACIÓN DE PROBLEMAS III. Funciones y Clases

• ¿Cuáles son sus datos miembro? Parece claro que el capital y el interés sí lo
serán ya que cualquier operación que se nos ocurra hacer con un objeto de la
clase !"#$%&#'%()*+,%#- involucra a ambas cantidades. ¿Pero y el número
de años?

• ¿Qué constructor definimos?
• ¿Queremos modificar el capital y el interés una vez creado el objeto?
• ¿Queremos poder modificarlos de forma independiente?
• ¿Hay alguna restricción a la hora de asignar un valor al capital e interés?
• ¿Es mejor un método para calcular el número de años hasta obtener el doble de
la cantidad inicial, o por el contrario es mejor un método para calcular el número
de años hasta obtener una cantidad específica?

Finalidad: Diseñar la interfaz de una clase. Dificultad Baja.

22. Recupere la solución del ejercicio 6 de esta relación de problemas (cómputo del sa-
lario en función de las horas trabajadas) Defina una clase !"#$% para gestionar el
cómputo del salario final. Suponga que el porcentaje de incremento en la cuantía de
las horas extras (50%) y el número de horas que no se tarifan como extra (40) son
valores que podrían cambiar, aunque no de forma continua. El número de horas tra-
bajadas y la cuantía a la que se paga cada hora extraordinaria, sí son cantidades que
varían de un trabajador a otro.

Finalidad: Diseñar la interfaz de una clase. Dificultad Baja.

23. Recuperad la solución del ejercicio 13 (actualización de la retención fiscal) de la re-
lación de problemas II. En este problema se leían caracteres de teclado (&'&(&$&)
para saber si una persona era autónomo, pensionista, etc.

)!*+ ,, -.$/0% 123'!$% 2' *$ +3%4%5%6!3 %*+7$!"!8 9'($: -;

6!<

)#$ == !1)#!$;

!1)#!$ > +!*11239!1)#!$:;

[email protected]#B2 9!1)#!$ C> &D& EE !1)#!$ C> & &:;

Este código era casi idéntico para la lectura del resto de los datos. Para evitarlo, de-
finid una clase F2$*D# G que encapsule esta funcionalidad y cambiar el programa
principal para que use esta clase.

24. Recuperad la solución del ejercicio 17 (recta) de esta relación de problemas. Se pide
crear un programa principal que haga lo siguiente:

• Se presentará al usuario un menú principal para salir del programa o para intro-
ducir los valores de los coeficientes HI JI K de la recta.

Guión de Prácticas. Fundamentos de Programación RP-III.11

Page 85

RELACIÓN DE PROBLEMAS V. Clases (Segunda parte)

Apéndice: Clase MyRandom

Proporcionamos dos posibles implementaciones de la clase !"#$%&' para generar nú-
meros enteros aleatorios entre un mínimo y un máximo.

Opción 1. Siguiendo el nuevo estándar de C++ 11.

()$*+,%- ./#$%&'0 11 2#/# +# 3-$-/#*)4$ %- $5'-/&6 26-,%&#+-#7&/)&6

()$*+,%- .*8/&$&0 11 2#/# +# 6-')++#

*+#66 9-$-/#%&/:+-#7&/)&;$7-/&6<

2/)=#7->

'[email protected]@AB 3-$-/#%&/C'-/6-$$-D 11 -/6-$$- 7E)67-/

,$)F&/'C)$7C%)67/)G,7)&$.)$70 %)67/)G,*)&$C,$)F&/'-D

2,G+)*>

9-$-/#%&/:+-#7&/)&;$7-/&6HI

>9-$-/#%&/:+-#7&/)&;$7-/&6HJK ?I<

L

9-$-/#%&/:+-#7&/)&;$7-/&6H)$7 ')$K )$7 '#MI<

#,7& 6-')++# N

*8/&$&>>8)38C/-6&+,7)&$C*+&*O>>$&EHIP7)'-C6)$*-C-2&*8HIP*&,$7HID

3-$-/#%&/C'-/6-$$-P6--%H6-')++#ID

%)67/)G,*)&$C,$)F&/'- N ,$)F&/'C)$7C%)67/)G,7)&$.)$70 H')$K '#MID

L

)$7 Q)3,)-$7-HI<

/-7,/$ %)67/)G,*)&$C,$)F&/'-H3-$-/#%&/C'-/6-$$-ID

L

LD

Guión de Prácticas. Fundamentos de Programación RP-V.16

Page 86

RELACIÓN DE PROBLEMAS V. Clases (Segunda parte)

Opción 2. A la antigua usanza, para aquellos compiladores que no proporcionen la biblioteca
!"#$%.

&'"()*#+ ,(-.#)'/0 11 2!3 4*+ '"()*' +-.!- /'/)'$.+(!-

&'"()*#+ ,(.'%+0

()!-- 536!"#$% 7

8 '9!.+:

'". %'";!)<

'". %!=;!)<

9$'# >"'.536!"#$% ?9$'#@

7

.'%+A. .<

- !"# ??'"[email protected] .'%[email protected]@< 11 >"'('!)'C! +) D+"+ !#$

11 ($" +) +)$E #+) -'-.+%!

F

8*/)'(:

536!"#$% ?'". +)A%'"'%$G '". +)A%!='%[email protected] :

%'";!)?+)A%'"'%[email protected] %!=;!)?+)A%!='%[email protected]

7

>"'.536!"#$%[email protected]<

'". "$A)$A*-$ H [email protected]< 11 #+-+(J$ +) 8 '%+ $

F

'". [email protected]

7

'". !"D$ H ?%!=;!) K %'";!)@LM<

'". 9M H !"D$ N ? !"#[email protected] 1 [email protected]@<

'". 9T H %'";!) L ?9M U !"[email protected]<

+.* " 9T<

F

'". 5'"[email protected]

7

+.* " %'";!)<

F

'". [email protected]

7

+.* " %!=;!)<

F

Guión de Prácticas. Fundamentos de Programación RP-V.17

Similer Documents