Вы находитесь на странице: 1из 15

Universidad Nacional Autónoma de Honduras

Departamento de matemática aplicada


Programación I (MM-314)
Guía de ejercicios primer parcial

mayo de 2018

Instrucciones: La tarea correspondiente al primer parcial consiste en entregar en hojas


tamaño carta los problemas de multiplicidad 3 de cada sección. Para ello se tomará en cuenta
el orden y la limpieza con la que trabaje, además debe usar los dos lados de la hoja y no colocar
hojas en blanco sin contenido; de no seguir estas instrucciones el profesor tendrá la facultad de
bajarle puntos.

§Ejercicios Introductorios
1. La siguiente oración no es una proposición.

(a) Todo entero par mayor que 4 es la suma de dos primos.


(b) Para algún entero positivo n, 19340=17n
(c) La línea "tócala otra vez, sam" corresponde a la película "Casa blanca"
(d) Pélame una uva. (e) La diferencia de dos primos es impar.

2. Imagine que una moneda es lanzada 10 veces, la negación a la proposición p : salieron algunas
caras y algunas cruces es:

(a) Salio a lo más una cara. (b) No salio ninguna cara.


(c) Salieron 10 caras ó salieron 10 cruces. (d) No salio ninguna cruz.
(e) Salio a lo más una cruz.

3. Sean las proposiciones p : hoy es lunes, q: está lloviendo, r: hace calor, la proposición
compuesta ((p ∧ q) ∨ r) ∧ (r ∨ (q ∨ p)) corresponde con la oración:

(a) hoy es lunes o está lloviendo. (b) hoy es lunes o está lloviendo o está haciendo calor.
(c) hoy llueve y es lunes, o hace calor. (d) hoy llueve y hace calor.
(e) hoy llueve.

4. La tabla que vemos a continuación corresponde adecuadamente con la proposición com-


puesta del ejercicio 3:

1
p q r p∧q q∨p (p ∧ q) ∨ r r ∨ (q ∨ p) ((p ∧ q) ∨ r) ∧ (r ∨ (q ∨ p))
v v v v v v v v
v v f v v v v v
v f v f v v v v
v f f f v f v f
f v v f v v v v
f v f f v f v f
f f v f f v v v
f f f f f f f f

(a) Cierto (b) Falso

5. Sean p, q y r las proposiciones del ejercicio anterior, la oración correspondiente a la


proposición (p ∧ (q ∨ r) → (r ∨ (q ∨ p)) es:

(a) Si hoy es un lunes lluvioso o un lunes caluroso entonces hoy es lunes o hace mucho
calor pero extrañamente llueve a cántaros.
(b) Si hoy es un lunes lluvioso o un lunes caluroso entonces hoy es lunes o llueve pero
hace calor.
(c) Si hoy es un lunes lluvioso o un lunes caluroso entonces hoy es un lunes lluvioso o es
un lunes caluroso o es un día lluvioso y caluroso.
(d) Si hoy es un lunes lluvioso o caluroso entonces hoy es lunes o está lloviendo o hace
mucho calor.
(e) Si hoy es un lunes lluvioso caluroso entonces hoy es lunes o llueve pero hace calor.
6. Suponiendo que A, B, C son proposiciones verdaderas y X, Y, Z son proposiciones falsas,
encierre aquellas proposiciones que sean verdaderas.

(a) ¬Z ∨ X (b) ¬(C ∧ A) ∨ (Y ∧ Z) (c) ¬(A ∨ C) ∨ ¬(X ∧ Y )


(d) ¬(C ∧ Y ) ∨ (A ∧ Z) (e) (A ∧ X) ∨ (B ∧ Y ) (f) ¬A ∨ B
(g) [X ∧ (Y ∨ Z)] ∧ ¬[(X ∧ Y ) ∨ (X ∧ Z)]
(h) [A ∧ (B ∨ C)] ∧ ¬[(A ∧ B) ∨ (A ∧ C)]
(i) ¬{[(¬A ∧ B) ∧ (¬X ∧ Z)] ∧ ¬[(A ∧ ¬B) ∨ ¬(¬Y ∧ ¬Z)]}
(j) ¬{¬[(B ∧ ¬C) ∨ (Y ∧ ¬Z)] ∧ [(¬B ∨ X) ∨ (B ∨ ¬Y )]}

7. Al asignarle los valores de 12 y 15 en la lectura de las variables a y b respectivamente, en


el diagrama de flujo que se ve abajo, obtenemos como impresión de pantalla:

No
Inicio leer a y b a=0 a←a−1 b←b+1

Si
imprimir b

Fin

(a) 5 (b) 12 (c) 7 (d) 17 (e) ninguna de las


anteriores.

8. En el ejercicio anterior ¿Qué estructuras(selección, repetición, decisión) de la progra-


mación estructurada se pueden identificar?.

2
(a) Las tres estructuras. (b) Secuencia y decisión únicamente.
(c) Solo secuencia. (d) Solo selección. (e) Secuencia y repeti-
ción únicamente.

9. ¿Tiene alguna finalidad el algoritmo del ejercicio 6?

(a) No tiene ningún sentido. (b) Este algoritmo suma los dos valores ingresados e
imprime la suma. (c) Solo vuelve a imprimir el valor de b.
(d) Este algoritmo hace algo solo si a es cero. (e) Este algoritmo imprime la resta
de los dos valores ingresados.

10. Considere la siguiente función definida por partes donde n es un número entero.
(
3n + 1 si n es impar
t(n) =
n/2 si n es par

¿EL algoritmo(flujograma) de abajo imprime la imagen de esta función?

Si
Inicio leer n ¿n es par? imprimir 3n + 1

No
imprimir n/2 Fin

(a) Cierto (b) Falso

11. Suponga que se lee n = 12, ¿Cuál es la salida en pantalla del siguiente algoritmo?

Inicio si (sw) Entonces


variables Suma <- Suma + 2;
Defina Suma, i, n como enteros; sino
Defina sw como variable lógica; Suma <- Suma + i*i
repetir fin si
Leer(n); i<-i+1
hasta n>0 sw <- sw+1
i <- 1; fin mientras
suma<- 0; escribe(Suma)
Sw<-0 fin
mientras i <= n Hacer

(a) 298 (b) 297 (c) 296 (d) 299 (e) 300

12. En el algoritmo del ejercicio anterior se puede identificar una estructura de repetición:

(a) Mientras (b) Hacer Mientras (c) Para (d) Ninguna de las
anteriores.

3
13. Al suponer que a = 4 y b = 7 la salida en pantalla es:

Inicio

Leer a y b

Imprimir a a=b
Si
No
No
a<b a←a−b
Si Si No
b←b−a

a=b

Final

(a) 2 (b) 7 (c) 28 (d) 1 (e) Ninguna de las


anteriores.
14. Suponga que se quiere freír un número determinado de hamburguesas, para tal objetivo se
tiene una pequeña parrilla donde se pueden colocar a lo más dos hamburguesas a la vez.
Cada hamburguesa tiene que ser freída por ambos lados, cada lado de la hamburguesa
se fríe en 1 minuto, ya sea que haya una o dos hamburguesas en la parrilla. Considere
el siguiente algoritmo, si se tiene una sola hamburguesa, se fríe un lado a la vez, si se
tienen 2 hamburguesas se fríen juntas un lado a la vez(tomando dos minutos en total),
si hay mas de 2 hamburguesas se van escogiendo dos hamburguesas a la vez hasta que
queden 1 o dos hamburguesas al finalizar este proceso. ¿El siguiente algoritmo escrito en
pseudocódigo dicta bien las instrucciones para freír todas las hamburguesas?

Inicio
escribir "Cuantas hamburguesas desea freir";
leer n;
si n=1 Entonces
escribir "Freir una hamburguesa en la parrilla";
sino
mientras n>2 Hacer
escribir "Tome dos hamburguesas para freirlas en la parrilla";
finmientras
escribir "freir dos hamburguesas en la parrilla";
finsi
Fin

(a) Cierto (b) Falso

4
15. El algoritmo del ejercicio anterior no fríe las hamburguesas en el menor tiempo posible,
es decir, existe otra forma de freír todas las hamburguesas en un menor tiempo.

(a) Cierto (b) Falso

16. Determine si la siguiente proposición es un tautología.

[p → (q → r)] → [(p → q) → (p → r)]

17. Encierre aquellas proposiciones tales que P ≡ Q(equivalentes).

(a) P = p y Q = p ∨ q (b) P = p ∧ (¬q ∨ r), Q = p ∨ (q ∧ ¬r)


(c) P = (p → q) → r, Q = p → (q → r)
(d) P = p → (q ∨ r), Q = ¬r → (p → q)

18. Haga una tabla de verdad para la siguiente proposición compuesta

[(p ∧ q) ∨ r] → (p ∨ r)

19. Determine si la siguiente proposición es una contradicción.

∼ {[p → (q → r)] → [(p → q) → (p → r)]}

20. Construya la tabla de verdad de la siguiente proposición compuesta.

¬[(p ∧ q) ∨ ¬(¬p ∨ ¬r)] ∨ [r ∧ ¬(p ∨ ¬p)]

5
§Estructura Secuencial
1. Escriba un programa que visualice la letra A mediante asteriscos.

2. Escriba un programa que convierta millas a kilómetros.

3. Escriba un programa que convierta grados Fahrenheit a grados Rankin.

4. Se desea redondear un entero positivo N a la centena más próxima y visualizar la salida.


Para ello la entrada de datos debe ser los cuatro dígitos A, B, C, D, del entero N. Por
ejemplo, si A es 2, B es 3, C es 6 y D es 2, entonces N será 2362 y el resultado redondeado
será 2400. Si N es 2342, el resultado será 2300, y si N = 2962, entonces el número será
3000. Diseñar el programa correspondiente.

5. La cantidad de líneas que se pueden imprimir en un papel depende del tamaño del papel,
el tamaño del punto de cada carácter en una línea, si las líneas están a doble espacio o
espaciado simple, el margen superior e inferior, y los márgenes izquierdo y derecho de el
papel. Suponga que todos los caracteres tienen el mismo tamaño de punto y todas las
líneas son a espacio simple o a doble espacio. Tenga en cuenta que 1 pulgada = 72 puntos.
Además, supongamos que las líneas se imprimen a lo largo del ancho del papel. Por
ejemplo, si la longitud del papel es de 11 pulgadas y el ancho es de 8.5 pulgadas, entonces
la longitud máxima de una línea es 8.5 pulgadas. Escribe un programa que calcula la
cantidad de caracteres en una línea y el número de líneas que se pueden imprimir en un
papel basado en la siguiente información dada por el usuario:

(a) El largo y ancho en pulgadas del papel.


(b) Los margenes superior, inferior, izquierdo y derecho en pulgadas.
(c) El tamaño de punto de un carácter.
(d) Si la lineas están doblemente espaciadas, entonces doblar el tamaño de punto de
cada carácter.

6. El número de día de año es la posición que ocupa este día respecto a los 365 días del año.
Por ejemplo, el 2 de febrero representa la posición 33, por lo tanto el número de día de
año del 2 de febrero es 33. Escriba un programa que reciba el número de día de año e
imprima en pantalla el número de día y el mes correspondiente; así, si alguien ingresa 33
entonces el programa deberá imprimir 2 de febrero.(Asuma que el año a considerar no es
bisiesto.)

7. Escriba un programa que lea los coeficientes a, b, c, d, e, f de un sistema lineal de dos


ecuaciones con dos incógnitas y muestre la solución.
(
ax + by = c
dx + ey = f

8. Escribir un programa que acepte un año escrito en cifras arábigas y visualice el año escrito
en números romanos, dentro del rango 1000 a 2100.

9. Escribir un programa que lea 4 números dados por el usuario y determine la siguiente
información:

(a) El mayor de los número ingresados.


(b) El menor de los número ingresados.
(c) El promedio de los números ingresados.
(d) El número que más se repite.
(e) El número que está más cerca del promedio.

6
(f) El número que está más lejos del promedio.

10 Escriba un programa que calcule e imprima f (x), para un número real x ingresado por el
usuario, dado que: (
x3 + 1 x < 0
f (x) =
|x| x≥0

11. Una compañía telefónica cobra a sus usuarios 40 lempiras por derecho a línea y cobra el
número de pulsos según la cantidad de pulsos realizadas, a continuación se presenta la
tarifa de pago por pulso según la cantidad de pulsos realizados por mes:

Número de pulsos en un mes(NP) Pago por pulso


menor o igual a 200 0.05 $
mayor que 200 y menor o igual que 400 0.04 $
mayor a 400 0.03 $

Desarrolle un programa donde el usuario ingrese el número de pulsos consumidos en un


mes y luego se imprima el pago por servicio telefónico en este mes. Imprima el valor total
de la factura en la moneda local.

12. Escriba un programa que determine el tipo de huracán con ayuda de la siguiente tabla.
Para lo anterior considere que un usuario ingresa la velocidad del viento.(Use una estruc-
tura switch).

Clasificación Viento(Km/h) Clasificación Viento(Km/h)


Depresión tropical <64 Huracán,Categoría2 154-177
Tormenta tropical 64-118 Huracán,Categoría3 178-208
Huracán,Categoría1 119-153 Huracán,Categoría4 209-251
Huracán,Categoría5 >252

13. Escriba un programa que determine si tres pares ordenados representan los vértices de
un triángulo isósceles.

§Estructura For
1. Escriba un programa que despliegue en pantalla todos los números pares comprendidos
entre 1 y 50.

2. Calcular todos los números de tres cifras tales que la suma de los cubos de las cifras sea
igual al valor del número.

3. Desarrolle en C++ un algoritmo que aproxime el logaritmo natural de un número x. Para


tal objetivo se tiene la aproximación al n-esimo término
n
!2i+1 !1 !3 !2n+1
X 1 x2 − 1 x2 − 1 1 x2 − 1 1 x2 − 1
ln(x) ≈ = + + ... +
i=0 2i + 1 x + 1 x2 + 1 3 x2 + 1 2n + 1 x2 + 1
2

Tome n = 30.

4. Considere el siguiente conjunto de puntos del plano, C = {(x, y)| 2x2 + y 2 ≤ 10014}. Es-
criba en C++ un programa que cuente el número de pares ordenados (x, y) perteneciente
a C tales que x e y sean números enteros.

5. Escriba un programa que calcule el factorial de un número n.

7
!
n
6. Escriba un programa que calcule el número combinatorio . La fórmula del número
m
combinatorio se muestra a continuación:
!
n n!
=
m m!(n − m)!

7. Desarrolle en C++ un algoritmo que aproxime el valor exponencial de un número x. Para


tal objetivo se tiene la aproximación al n-ésimo término
n
xi x x2 xn
ex ≈
X
=1+ + + ...+
i=0 i! 1! 2! n!

Tome n = 50.

8. Escriba un programa que haga uso de la estructura for para imprimir las siguientes 4
figuras:

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

9. Use la siguiente fórmula para calcular la raíz cuadrada de 1.9.

√ N
(−1)n (2n)!
xn .
X
x+1 ≈ n
n=0 (1 − 2n)(n!) 4
2

Tome N = 20

§Estructura While
1. Escriba un programa que lea un conjunto de números. Después se debe desplegar en
pantalla el número de datos que son positivos.

2. Desarrolle un programa en C++ de ayuda a un estudiante de la UNAH que quiere cal-


cular sú índice académico. Para ello el programa solicitará la nota y luego las unidades
valorativas de la respectiva clase, inmediatamente el programa preguntará si desea seguir
ingresando calificaciones o si desea terminar. Al finalizar, el programa deberá imprimir
el índice académico del estudiante.

3. El algoritmo babilónico para calcular la raíz cuadrada de un número n se describe a


continuación.

8
(a) Primero escoge un número al azar x.
(b) Luego has la siguiente asignación: r = n/x
(c) Reajusta el valor de x a x = (x + r)/2
(d) Repite los pasos (b) y (c) "cuantas veces sea necesario."
Escriba un programa que pida al usuario el número n, el programa deberá repetir los
pasos (b) y (c) hasta que la diferencia entre el nuevo valor de x y el viejo valor de x sea
menor el 1% del viejo valor de x.
4. Escriba un programa donde el usuario ingresa una secuencia de número enteros positivos
que corresponden a las edades de personas. El usuario termina de ingresar las edades
cuando se ingresa un número negativo. El programa debe calcular el promedio de las
edades ingresadas y además debe decir cuál es la mayor edad ingresada.
Modifique su programa para que reciba el siguiente conjunto de edades
{1, 1.1, 1.2, 1.3, 1.4, ..., 2, 2.1, 2.2, 2.3, ..., 99.8, 99.9, 100}
¿Cuál es el promedio de las edades anteriores?
5. La población de un pueblo A es menor que la población del pueblo B. Sin embargo, la
población de la ciudad A está creciendo más rápido que la población de la ciudad B. Es-
criba un programa que solicite al usuario ingresar la población y tasa de crecimiento anual
de cada pueblo. El programa muestra después en cuántos años la población de la ciudad
A será mayor o igual a la población de la ciudad B y las poblaciones de ambas ciudades
en ese momento. (Una muestra de entrada es: Población de Angola es 24,300,000, tasa
de crecimiento anual de Angola 3.52%, la población de China es 1,369,811,000, y la tasa
de crecimiento de anual de china 0.41%.)
6. Escriba un programa que reciba como entrada un número entero positivo, a continuación
el programa deberá calcular cuantos dígitos posee el número ingresado.
7. Escriba un programa que convierta un número natural positivo escrito en base 10 a su
correspondiente representación en base binaria.
8. Escriba un programa que determine si un número natural dado es compuesto o primo.
9. Se llama números triangulares a los obtenidos como suma de los n primeros números
naturales, esto es 1, 1+2, 1+2+3, ... Elabore un programa que calcule el n-ésimo número
triangular.
10. Elabore un programa que determine si un número natural es triangular.
11. Elabore un programa que calcule el máximo común divisor de dos números.
12. Elabore un programa que calcule el mínimo común múltiplo de dos números.
13. Elabore un programa que despliegue la factorización completa de un número natural dado
por el usuario. Ejemplo, si alguien ingresa el número natural 24, entonces el programa
deberá desplegar en pantalla lo siguiente:
24 = 2 × 2 × 2 × 3

14. Modifique el programa anterior para que la factorización se despliegue en el siguiente


formato:
24 = 2 ∧ 3 × 3
15. Escriba un programa que imprima y cuente los divisores de un número natural n dado
por el usuario.

9
§Misceláneos
1.

Escriba un programa que inicialmente so- Ingrese el numerador de la primer


licite dos fracciones, para ello se debe fraccion:13
pedir al usuario el numerador y denom- Ingrese el denominador de la
inador(ambos valores enteros) de ambas, primer fraccion:7
teniendo cuidado que el denominador no Ingrese el numerador de la segunda
sea cero. Luego debe aparecer un menú fraccion:24
que tenga como opciones las operaciones Ingrese el denominador de la
aritméticas(+,-,*,/). Dependiendo de la segunda fraccion:9
elección se hará dicha operación, obteniendo Operaciones
el numerador y denominador del resultado, 1. Suma.
luego se imprimirá en pantalla la frac- 2. Resta.
ción resultante. Además la fracción re- 3. Producto.
sultante debe aparecer de forma simplifi- 4. División.
cada, es decir el denominador y numerador Elija una opcion:1
del resultado ya no deben tener factores El resultado es:175/51
en común. A continuación se muestra un
ejemplo del diálogo entre el programa y un
usuario que ingresa las fracciones 13
7
y 24
9

2. Considere la fórmula de interés compuesto

Cf = Ci(1 + r)n

Donde Cf es el capital final, Ci es el capital inicial, r es la tasa de interés expresada en


tanto por uno(0 < r < 1) y n es el número de periodos. Elabore un programa que genere
un menú como el siguiente:

Calculo de las variables de interes compuesto

(a) Calcular Cf
(b) Calcular Ci
(c) Calcular r
(d) Calcular n
(e) Salir

Luego el programa solicitará al usuario una de las opciones del menú(a, b, c, d o e). Al
ingresar cualquiera de las 4 primera opciones el usuario estará solicitando calcular el
valor de dicha variable, para ello le solicitará las restantes tres variables involucradas.
Por ejemplo, si el usuario ingresa la opción b entonces se solicitará el valor de Cf , r y
n, con esa información se calculará Ci. Use la estructura de selección switch. *Nota:
Para este programa se deben usar simples operaciones aritméticas, no se permite usar la
librería de matemática.

3.

Escriba un programa que inicialmente solicite opciones:


dos pares ordenados (x1 , y1 ) y (x2 , y2 ),para ello Distancia, se calculará la distancia entre los
x1 , x2 , y1 y y2 se solicitan al usuario. Luego dos puntos y se imprimirá en pantalla.
debe aparecer un menú que tenga las siguientes P unto medio, se imprimirá el punto medio de

10
los pares ordenados ingresados. Ingrese la primera abscisa:-1
P endiente, calculará la pendiente de la recta Ingrese la primera ordenada:1
que pasa por esos dos puntos. Ingrese la segunda abscisa:1
T riangulo se imprimirá un mensaje que nos Ingrese la segunda ordenada:1
diga si el triángulo formado por los dos puntos Operaciones
y el origen es escaleno, isósceles o equilátero. 1. Distancia.
A continuación se ve un ejemplo del diálogo 2. Punto medio.
entre el usuario y el programa. 3. Pendiente.
4. Triangulo.
Elija una opcion: 4
El triangulo formado con el origen es
isosceles.

4.

Suponga que en una tienda se venden úni- inmediatamente después de escoger alguna
camente dos tipos de pares de calzados, ten- de las opciones se solicitará el número de za-
nis y botas, los tennis tienen un precio de pato. Luego de haber leído varios pedidos
600 + 4N, donde N representa el número se generará una factura como la siguiente:
de zapato (este número va en un rango de
35 a 48) y las botas tienen un precio de
1000 + 10N donde N tiene el mismo signifi-
Factura
cado que antes. Diseñe un programa que lea
Numero de tennis: 30
el siguiente menú varias veces:
Total tennis: 22800 lps
Tienda de zapatos Numero de botas: 10
1. Tennis Total botas: 14100 lps
2. Botas Impuesto sobre venta: 5535 lps
Ingrese una de las opciones:_ Total a pagar: 42435 lps

5. Un laboratorio de investigación del gobierno ha concluido que un edulcorante artificial


comúnmente utilizado en refrescos dietéticos causa la muerte en ratones de laboratorio.
Un amigo suyo está desesperado por perder peso, pero no puede dejar de tomar gaseosas.
Tu amigo quiere saber cuánto refresco dietético es posible beber sin morir como resultado.
Escribe un programa para proporcionar la respuesta. La entrada del programa es la
cantidad de edulcorante artificial necesaria para matar a un ratón, el peso del ratón y
el peso de su amigo. Para garantizar la seguridad de su amigo, asegúrese de que el
programa solicite el peso al que su amigo dejará de hacer dieta, en lugar del peso que
tiene actualmente. Suponga que la centésima parte de la gaseosa es edulcorante artificial.
Usa una declaración de variable con el modificador const para dar un nombre a esta
fracción. Su programa debe permitir que el cálculo se repita tantas veces como lo desee
el usuario.

6. Una oficina de bienes raíces maneja 50 unidades de departamentos. Cuando el alquiler


tiene un costo de 15,000 lps por mes, todas las unidades están ocupadas. Sin embargo,
se realiza un aumento de 960 lps en el alquiler por cada unidad vacante. Además, cada
unidad ocupada requiere un promedio de 700 lps por mes para mantenimiento. ¿Cuántas
unidades se deben alquilar para maximizar el beneficio?

7. Elabore un programa en C++ que calcule el seno de un número real x. Para ello sírvase
de la siguiente fórmula truncada:
n
X x2k+1
k x x3 n x
2n+1
sin(x) ≈ (−1) = − + ... + (−1)
k=0 (2k + 1)! 1! 3! (2n + 1)!

11
8 Se pide al usuario cuatro pares ordenados. A continuación se solicita escribir un programa
que determine si estos cuatro puntos forman un paralelogramo.

§Ejercicios de investigación
1. Algoritmo de Luhn Escriba un algoritmo en C++ que verifique si un número de
cuenta de 15 dígitos(incluyendo el número de chequeo) es o no valido según el algoritmo
de chequeo de Luhn.

2. Mínimos cuadrados. El método de mínimos cuadrados consiste en encontrar la recta


y = mx+b que mejor se ajuste al conjunto de pares ordenados {(x1 , y1 ), (x2 , y2 ), ..., (xn , yn )}.
Para encontrar los valores de m y b se usan las siguientes fórmulas:

• Sx = ni=1 xi
P Sx • b = ŷ − mx̂
• x̂ =
• Sy = ni=1 yi
P n nSxy − Sx Sy
• m=
• Sxx = ni=1 x2i
P
nSxx − Sx Sy
Sy
• Sxy = ni=1 yi xi
P
• ŷ =
n

Escriba un algoritmo que reciba n pares ordenados y a continuación calcule los valores de
m y b.

3. Método de regla falsa. Use el método de la regla falsa para encontrar una aproximación
de la raíz de la siguiente ecuación:

x5 + x3 − 4 = 0

4. Números perfectos. Escriba un programa que determine si un número natural es


perfecto.(Haga una prueba con el número 137438691328 encontrado por el matemático
Leonhard Euler)

5. Números amigos. Escriba un programa que determine si dos número son amigos.(Haga
una prueba con 10744 y 10856)

6. Números sociables. Escriba un programa que determine si cuatro números son socia-
bles.(Haga una prueba con la siguiente lista: 1264460,1547860,1727636,1305184)

7. Año bisiesto. Escriba un programa que determine si un año es o no bisiesto.

8. Palíndromo Escriba un programa que determine si un número natural es un palíndromo.

12
§Pruebas de escritorio
1. Suponga que en el siguiente programa el usuario ingresa los valores de 23 y 23.1. Realice
la prueba de escritorio correspondiente.

#include<i o s t r e a m> n = ++m;


using namespace s t d ; m=m+1;
n=m;
i nt main ( ) { cout<<"m= "<<m<< " n= "<<n<<e n d l ;
cout<<" Hola mundo : \v "<<e n d l ; n = m++;
cout<<" Aqui e s t o y : "<<e n d l ; cout<<"m= "<<m<<" n= "<<n<<e n d l ;
i nt x ; cout<<"m = "<<m++<<e n d l ;
double y ; cout<<" m = "<<++m<<e n d l ;
cout<<" I n g r e s e un e n t e r o : " ; bool p ;
c i n >>x ; m=10;
cout<<" I n g r e s e un r e a l : " ; x=20;
c i n >>y ; p=m==x ;
cout<<" V a l o r e s : "<<x<<y<<e n d l ; cout<<" El v a l o r de l a p r o p o s i c i o n p
i nt x1 =12 ,y1 =7; e s : "<<p<<e n d l ;
cout<<"Suma : "<<x1+y1<<e n d l ; p=m<=x ;
cout<<" Resta : "<<x1−y1<<e n d l ; cout<<" El v a l o r de l a p r o p o s i c i o n p
cout<<" M u l t i p l i . : "<<x1 ∗y1<<e n d l ; e s : "<<p<<e n d l ;
cout<<" D i v i s i o n : "<<x1 / y1<<e n d l ; p=m!=x ;
cout<<" Modulo : "<<x1%y1<<e n d l ; cout<<" El v a l o r de l a p r o p o s i c i o n p
i nt x2 =12 ,y2 =7; e s : "<<p<<e n d l ;
x2+=y2 ; long i nt x_1 ;
cout<<" Operador 1 : "<<x2<<e n d l ; i nt x_2 ;
x2−=y2 ; long unsigned i nt x_3 ;
cout<<" Operardor 2 : "<<x2<<e n d l ; cout<<" La c a p a c i d a d de i n t e s : "<<
x2∗=y2 ; s i z e o f ( x_2 )<<e n d l ;
cout<<" Operador 3 : "<<x2<<e n d l ; cout<<" La c a p a c i d a d de l o n g i n t e s : "
x2/=y2 ; <<s i z e o f ( x_1 )<<e n d l ;
cout<<" Operador 4 : "<<x2<<e n d l ; cout<<" La c a p a c i d a d de l o n g u n s i g n e d
x2%=y2 ; i n t e s : "<<s i z e o f ( x_3 )<<e n d l ;
cout<<" Operador 5 : "<<x2<<e n d l ; return 0 ;
i nt m=10 ,n ; }

2. Realice una prueba de escritorio para el siguiente programa. Suponga que la entrada de
datos para este programa se da en el siguiente orden: C,t
#include <i o s t r e a m >
#include < s t d l i b . h>
using namespace s t d ;
i nt main ( ) {
char r e s p u e s t a , t i p o ;
double ISV ,TOT, Sub ;
bool i n d i c a d o r a =1;
cout<<" ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗∗ ∗∗ ∗∗ ∗∗ ∗∗ ∗∗ ∗ ∗∗Menu∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗∗ ∗∗ ∗∗ ∗∗∗ ∗∗ "<<e n d l ;
cout<<"Combo A: \ t "<<" 1 b a l e a d a \ t 1 r e f r e s c o \ t 30 l p s "<<e n d l ;
cout<<"Combo B : \ t "<<" 2 b a l e a d a \ t 1 r e f r e s c o \ t 31 l p s "<<e n d l ;
cout<<"Combo C: \ t "<<" 1 pupusa \ t 1 r e f r e s c o \ t 40 l p s "<<e n d l ;
cout<<"Combo D: \ t "<<" 2 pupusa \ t 1 r e f r e s c o \ t 41 l p s "<<e n d l ;
cout<<"Combo E : \ t "<<" 1 t a c o \ t \ t 1 r e f r e s c o \ t 52 l p s "<<e n d l ;
cout<<" I n g r e s a r Combo : " ;
c i n >>r e s p u e s t a ;
switch ( r e s p u e s t a ) {
case ’ a ’ : Sub=30;
break ;
case ’ b ’ : Sub=31;
break ;
case ’ c ’ : Sub=40;
break ;

13
case ’ d ’ : Sub =41;
break ;
case ’ e ’ : Sub =52;
break ;
case ’A ’ : Sub =30;
break ;
case ’B ’ : Sub =31;
break ;
case ’C ’ : Sub =40;
break ;
case ’D ’ : Sub =41;
break ;
case ’E ’ : Sub =52;
break ;
default : cout<<" Usted no ha e s c o g i d o ningun combo . \n " ;
i n d i c a d o r a =0;
}
i f ( indicadora ){
cout<<" E f e c t i v o : \ t M"<<e n d l ;
cout<<" T a r j e t a : \ t T"<<e n d l ;
cout<<" I n g r e s a r t i p o de pago : " ;
c i n >>t i p o ;
system ( " c l e a r " ) ; /∗ syst em ( " c l s " ) ∗/
cout<<" ∗ ∗ ∗ ∗ ∗ ∗ ∗∗∗∗FACTURA∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗∗∗∗ "<<e n d l ;
ISV =0.15∗ Sub ;
TOT=ISV+Sub ;
i f ( t i p o== ’M’ | | t i p o== ’m’ )
cout<<" Forma de pago : \ t E f e c t i v o \n " ;
else{
cout<<" Forma de pago : \ t T a r j e t a \n " ;
double d e s c u e n t o =0.01∗ Sub ;
cout<<" Descuento : \ t "<<descuento <<" \n " ;
TOT=TOT−d e s c u e n t o ;
}
cout<<" S u b t o t a l : \ t "<<Sub<<e n d l ;
cout<<" ISV : \ t \ t "<<ISV<<e n d l ;
cout<<"TOTAL: \ t \ t "<<TOT<<e n d l ;
cout<<" ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗∗ ∗∗ ∗ ∗∗ ∗∗ ∗∗ ∗∗ ∗∗ "<<e n d l ;
}
return 0 ;
}

3. Realice una prueba de escritorio del siguiente programa. Entrada de datos: 10,
#include <i o s t r e a m >
using namespace s t d ;
i nt main ( ) {
char C e n t i n e l a= ’ S ’ ;
i nt x ;
while ( C e n t i n e l a != ’ s ’ | | C e n t i n e l a != ’ S ’ ) {
cout<<" I n g r e s e un numero e n t e r o : " ;
c i n >>x ;
i nt i =1;
while ( i<=x ) {
i f ( x==i ∗ i ) {
cout<<" x e s un cuadrado "<<e n d l ;
break ; }
i ++;}
cout<<" S i d e s e a s a l i r d e l c i c l o p r e s i o n e l a l e t r a s , s i n o p r e s i o n e
cualquier otra t e c l a : " ;
c i n >>C e n t i n e l a ; }
return 0 ;
}

14
4. Muestre cual es la salida en pantalla del siguiente programa.

#include<i o s t r e a m> cout<<" ∗ " ;


using namespace s t d ; for ( i nt j =2; j <i ; j ++)
i nt main ( ) { cout<<" " ;
for ( i nt i =1; i <=4; i ++){ for ( i nt j =1; j <i ; j ++)
cout<<" " ;\\4 espacios cout<<" " ;
for ( i nt j =1; j <i ; j ++) for ( i nt j =1; j <=4−i ; j ++)
cout<<" ∗ " ; cout<<" ∗ " ;
for ( i nt j =1; j <=4−i ; j ++) cout<<e n d l ;
cout<<" " ; \ \ 1 e s p a c i o s }
for ( i nt j =1; j <=3−i ; j ++) return 0 ;
cout<<" " ; \ \ 1 e s p a c i o s }
for ( i nt j =1; j <=( i +1) ∗ 3 / 4 ; j ++)
cout<<" ∗ " ;
cout<<e n d l ;
} Pantalla del computador:
for ( i nt i =1; i <=3; i ++){
for ( i nt j =1; j <i ; j ++)
cout<<" " ;
for ( i nt j =1; j <=15−2∗i ; j ++)
cout<<" ∗ " ;
cout<<e n d l ;
}
for ( i nt i =1; i <=3; i ++){
for ( i nt j =1; j <=4−i ; j ++)
cout<<" " ; \ \ 1 e s p a c i o s
for ( i nt j =1; j <=7+2∗ i ; j ++)
cout<<" ∗ " ;
cout<<e n d l ;
}
for ( i nt i =1; i <=4; i ++){
cout<<" " ;\\4 espacios
for ( i nt j =1; j <=(6− i ) ∗ 3 / 4 ; j ++)

15

Вам также может понравиться