Está en la página 1de 2

Facultad Politécnica – IEL/ICM/IEK/IAE/IEN - Algoritmos

Unidad V Subprogramas – TAREA 7-U5

Fecha de entrega : por EDUCA hasta el 04/09/2020 23:59 hs

Luego de las lecturas y prácticas sugeridas, resolver los dos ejercicios planteados. Los ejercicios tienen igual peso.
Forma de presentar: un solo archivo comprimido (zip o rar) con la identificación del grupo asignado en Educa, y primer apellido y nombre del o
los integrantes seguido de la identificación de la tarea.
g##_apellido1_nombre1_y_apellido2_nombre2_Tarea_7_u5.zip
Ejemplo: Grupo 1, Juan Perez y Rosa Gonzalez. Archivo: 1_Perez_Juan_y_Gonzalez_Rosa_Tarea_7_u5.zip

Criterios de evaluación de cada solución presentada:

Criterio %
C1 - Orden, estilo y uso adecuado del lenguaje
Este puntaje incluye los siguientes aspectos:
• Nombre de variables adecuado
• Comentarios suficientes para comprender la solución
15
• Identación y uso de espaciado adecuado
• Uso de constantes nominales cuando sea el caso
• Expresiones simples
• Uso de tipo de datos adecuados
C2 - Implementación correcta de las Validaciones si es el caso
El enunciado de los ejercicios pueden implicar validaciones que deben aparecer en la solución. Además las
15
validaciones deben estar ubicadas correctamente de acuerdo a lo descrito en el ejercicio.
Los mensajes de validación deben ser claros con respecto a lo requerido.
C3 - Funcionamiento correcto del algoritmo
La solución algorítmica es la parte fundamental de la solución y básicamente es la estrategia y la idea que se 60
utilizó para la solución del ejercicio.
C4 - Salida esperada
Se debe respetar la forma que el ejercicio solicita la emisión de los resultados y el formato de los mismos. 10
Este apartado considera ese aspecto.

Ejercicio 1 (ej1.sl)

Leer una serie de números enteros positivos mayores a cero y luego imprimir el resultado de multiplicarlos.

Para la multiplicación utilice el método denominado multiplicación a la rusa que se describe a continuación:

La multiplicación a la rusa se basa en multiplicar y dividir por Ahora, para cada número par de la primera columna,
dos, y luego hacer una suma final. A continuación un ejemplo: tachamos toda la fila:

Queremos multiplicar 69 por 13, así que escribimos: 69 x 13


69 x 13 --------
17 x 52
Debajo del 69, escribimos su mitad, ignorando el resto de la --------
división: --------
69 x 13 --------
34 1 x 832

Debajo del 13, escribimos su doble: Sumamos entonces los números que quedan en la segunda
69 x 13 columna
34 x 26
+ 13
Seguimos dividiendo el primer número entre dos (ignorando el + 52
resto), y duplicando el segundo, hasta que el primero alcance + 832
el 1: =====
69 x 13 897
34 x 26
17 x 52 Este es el valor que buscamos 69x13 = 897
8 x 104
4 x 208
2 x 416
1 x 832

Ejemplo de la serie : 10, 20, 5 , 8, 18 , 0


Entonces se debe imprimir el resultado de : 10*20*5*8*18 = 144000
Observaciones:
– Se lee la serie hasta que el número sea cero o negativo
– El ejercicio solo será válido si utiliza el método descrito arriba, es decir esta estrictamente prohibido utilizar el operador
“*” de multiplicación (excepto los necesarios por el método explicado)
– El proceso de multiplicación debe desarrollarse en una subrutina.
sub mult( a, b : numerico) retorna numerico

Ejercicio 2 (ej2.sl)

Haga una función que reciba dos parámetros N y B. Debe retornar el número N que esta en la base B, a la base decimal. La base
B debe estar entre 2 y 9. En caso de que hubiere algún error retornar -1. Los errores posibles son: I) N no esta en la base B ó II)
B no se encuentra entre 2 y 9.

Por cada validación que necesite (I y II) debe construir una subrutina separada.

La definición de la función es la siguiente:


sub convertir_a_decimal ( N, B: numerico ) retorna numerico

Para realizar la conversión utilice la Regla de Horner, que se explica abajo:

Dado el polinomio:

donde son números reales, queremos evaluar el polinomio a un valor específico de x digamos X0.

Definimos una nueva secuencia de constantes como se muestra a continuación:


bn = an
bn-1 = an-1 + bnx0
...
b0 = a0 + b1x0

Entonces el valor b0 es el valor p(x0)

El polinomio de arriba puede escribirse:

Sustituyendo iterativamente bi en la expresión , se tiene:

=
=
..
=
=

Ejemplos con datos:


N B En decimal
10111 2 23
1240 5 195
756 8 494

Aplicación de la Regla de Horner sobre los ejemplos mostrados arriba

a) Caso 10111 en base 2 (binario) sería

b4 = 1 = 1
b3 = 0 + 1*2 = 2
b2 = 1 + 2*2 = 5
b1 = 1 + 5*2 = 11
b0 = 1 + 11*2 = 23

b) Caso 1240 en base 5

b3 = 1 = 1
b2 = 2 + 1*5 = 7
b1 = 4 + 7*5 = 39
b0 = 0 + 18*5 = 195

c) Caso 756 en base 8 (octal) sería

b2 = 7 = 7
b1 = 5 + 7*8 = 61
b0 = 6 + 61*8 = 494

También podría gustarte