5 ejercicios corregidos sobre estructuras algorítmicas

Los siguientes ejercicios corregidos se relacionan con estructuras algorítmicas, estructuras de control y estructuras de datos. El objetivo es proponer las estructuras más adecuadas al enunciado.

estructuras algorítmicas

Ejercicio 1

Esta técnica de multiplicación, utilizada en el antiguo Egipto, no requiere conocer todas las tablas de multiplicar hasta el 10 sino solo la suma y la multiplicación por 2.

Aquí está por ejemplo la multiplicación de 13 por 78. Primero debes escribir la tabla de potencias de 2 menor o igual a 13. Luego, escribe la tabla de dobles del número 78.

Algoritmo de multiplicación egipcio

Luego, tienes que marcar las mayores potencias de 2 descomponiendo el número 13 (es decir, que el bit binario es igual a 1). En otras palabras, marque las potencias de 2 ingresando la conversión binaria del número 13 = 1101

Algoritmo de multiplicación egipcio

La suma es 78+312+624=1014.

a – Calcula el producto de tu elección utilizando el algoritmo de la división egipcia. 

b – ¿Es más fácil calcular el producto de 78 por 13? Por qué ?

c – Escribe el algoritmo de multiplicación egipcio (¡según tu respuesta de b!). ¡Intenta optimizarlo lo mejor que puedas!

Lo más fácil es elegir el número más pequeño para la potencia de 2 y por lo tanto el número más grande a duplicar. Efectivamente, el número de iteraciones es igual al número de veces que es necesario multiplicar 2 por sí mismo para que sea mayor que el número menos una iteración (solo mantenemos lo estrictamente inferior. Tendremos por tanto un número d iteración n tal que 2no > a (número descrito). Deducimos que n>log2(a) de ahí el interés de que a sea el más pequeño.

Primero recordamos la transformación binaria de un número decimal.

Algoritmo de multiplicación egipcio

Lo que da el siguiente algoritmo:

multiplicación egipcia

No es necesario utilizar una variable temporal para intercambiar dos valores. Aquí hay otra versión del algoritmo:

multiplicación egipcia

Ejercicio 2

a – Escribe un algoritmo cuyos parámetros son tres variables reales y que permuta circularmente sus valores. 

b – Escribir un algoritmo cuyos parámetros sean tres variables reales y devuelva el valor máximo entre estos tres valores. 

c – Escribir un algoritmo que permita los valores de dos variables sin utilizar una variable adicional.

d – Escriba un algoritmo que devuelva verdadero si dos números enteros a y b tienen el mismo signo, de lo contrario falso

posee - Las variables a, b y c son variables definidas fuera del algoritmo. Estos valores se modifican aunque no se devuelva nada. ¡Presta atención al orden de tus operaciones!

algoritmo de permutación

También puede hacer esto sin tomar una variable adicional. En este caso tendremos al principio (a,b,c). Por ejemplo, a y b se intercambian mediante las siguientes operaciones:

un ← un + b

b ← a–b

a ← a–b

Tenemos por tanto el triple de valores (b,a,c). Resta intercambiar a y c para obtener el triple (b,c,a).

O también puedes intercambiar los tres valores usando una serie de cálculos.

a ← a + b + c;

c ← a–b–c;

b ← a–b–c;

a ← a–b–c;

b- Aquí el algoritmo debe devolver un valor, por lo que hay entradas y salidas. Hay muchas formas de hacer las cosas, depende de ti encontrar variantes (con varias condiciones en la rama, por ejemplo).

algoritmo máximo

La idea sería devolver el máximo sin usar variables adicionales.

algoritmo máximo de tres variables

Tampoco es muy bonito allí, por lo que intentaremos devolver el máximo solo una vez sin usar nuevas variables. Permutaremos los valores para almacenar el máximo en x (ojo, dependiendo de los idiomas puedes tener un impacto real en los valores en xy y z, ¡así que utilízalo con precaución!)

algoritmo optimizado máximo

vs- Lo acabamos de hacer varias veces... para aquellos que no han seguido.

algoritmo de permutación

d- Pensaremos en un algoritmo bien optimizado para evitar hacer muchas ramas. ¡Dos números enteros con el mismo signo tendrán su producto positivo! (0 es tanto positivo como negativo)

algoritmo de signo idéntico

Ejercicio 3

Una copistería cobra 2 euros por las diez primeras fotocopias, 1,50 euros por las siguientes veinte y 1 euro más allá. Escriba un algoritmo que le pregunte al usuario la cantidad de fotocopias realizadas y luego muestre la cantidad correspondiente.

algoritmo de factura

Es posible poner las ramas en secuencia, pero eso es menos eficiente en el tiempo de cálculo.

Ejercicio 4

Escribe un algoritmo para mostrar la estación introduciendo el número del mes.

Ejercicio 5

Escriba un algoritmo para resolver cada uno de los siguientes problemas: (pruebe con diferentes estructuras de control FOR, WHILE, DO… WHILE, etc.).

1- Cálculo de la suma de los primeros N enteros. 

2- Encontrar el mínimo y el máximo en un conjunto de N números. 

3- Cálculo del cociente y resto de la división de dos enteros A y B sin utilizar la operación de división. 

4- El cálculo del producto de dos números enteros utilizando únicamente la operación de suma '+'. 

5- Determinación si A es divisible por B. Con A y B enteros positivos. 

6- Determinar todos los divisores de un entero X dado. 

7- Determinar si un entero X es primo o no. 

8- Calcular la suma de las cifras que forman un número natural N.

algoritmo de suma

algoritmo mínimo máximo

algoritmo resto del cociente

algoritmo de producto

algoritmo divisor

algoritmo divisor

algoritmo de números primos

algoritmo de suma de dígitos

Errata: al principio R = N, en caso contrario el algoritmo no hace nada (decimos que no es correcto porque no resuelve el problema planteado).

Compartir, repartir