Codificación aprenderaprogramar.com: CU00222A
EJERCICIO PROGRAMA DE LIBRERÍA. PARTE 1.
Realizar un algoritmo que resuelva el programa abajo descrito y que introduzca:
- Programación por módulos.
- Declaración de variables, utilizando la asignación por paquetes o grupos para los arrays indefinidos.
- Salida del programa controlada por el usuario.
Una librería dispone de un archivo donde se guarda información relativa a un lote de libros estructurada de la siguiente manera:
Dato(1) = [Número de ISBN, 10 dígitos] |
Dato(2) = [Precio de venta al público, en euros] |
Dato(3) = [Señalero, -33 Libro de menos de un año de antigüedad -66 Libro de uno a tres años de antigüedad -99 Libro de más de tres años de antigüedad] |
Dato(4) = [Número de ISBN] |
. . . |
Dato(n – 1) = [Señalero -33, -66, -99] |
Dato(n) = [Señalero -500, Fin del lote] |
Se desea desarrollar un programa que permita:
a) Consultar el precio de un libro dado su ISBN.
b) Conocer el precio del lote de libros en conjunto.
Teniendo en cuenta lo siguiente: si el libro tiene menos de un año de antigüedad su precio coincide con el registrado. Si tiene entre uno y tres años deberá aplicarse un descuento del 15%. Si tiene más de tres años deberá aplicarse una rebaja del 25%.
SOLUCIÓN
Pseudocódigo:
PROGRAMA LIBRERIA01 [Ejemplo pseudocódigo – aprenderaprogramar.com]
Variables Enteras: E
1. Inicio 2. Mientras E<> 3 Hacer 2.1 Mostrar “Elija una opción. 1 = Precio de un libro 2 = Precio del lote. 3 = Salir” 2.2 Pedir E 2.3 Si E = 1 Entonces Hallaplibro FinSi 2.4 Si E = 2 Entonces Hallaplote FinSi Repetir 3. Fin
Módulo Hallaplibro Variables Enteras: i, ISBN Reales: Dato(), Precio Booleanas: Encontrado 1. i = 1 2. Redimensionar Dato(31) 3. Leer Dato(1) 4. Mostrar “¿Cuál es el ISBN?” : Pedir ISBN 5. Mientras Dato(i) <> -500 Hacer 5.1 Si i >= Limitesuperior(Dato) Entonces Redimensionar Dato(Limitesuperior(Dato) + 30) FinSi 5.2 Si Dato(i) = ISBN Entonces 5.2.1 Leer Dato(i + 1) : Leer Dato(i + 2) 5.2.2 Precio = Dato(i + 1) 5.2.3 Si Dato(i + 2) = -66 Entonces Precio = 0,85 * Precio FinSi 5.2.4 Si Dato(i + 2) = -99 Entonces Precio = 0,75 * Precio FinSi 5.2.5 Mostrar “El precio del libro con ISBN”, ISBN, “es de”, Precio 5.2.6 Encontrado = Verdadero FinSi 5.3 i = i + 3 : Leer Dato(i) Repetir 6. Si Encontrado = Falso Entonces Mostrar “No se ha encontrado el ISBN deseado” FinSi FinMódulo
Módulo Hallaplote
Variables Enteras: i Reales: Dato(), Precio, Valorlote 1. i = 1 2. Redimensionar Dato(31) 3. Leer Dato(1) 4. Mientras Dato(i) <> -500 Hacer 4.1 Si i >= Limitesuperior(Dato) Entonces Redimensionar Dato(Limitesuperior(Dato) + 30) FinSi 4.2 Leer Dato(i + 1) : Leer Dato(i + 2) 4.3 Precio = Dato(i + 1) 4.4 Si Dato(i + 2) = -66 Entonces Precio = 0,85 * Precio FinSi 4.5 Si Dato(i + 2) = -99 Entonces Precio = 0,75 * Precio FinSi 4.6 Valorlote = Valorlote + Precio 4.7 i = i + 3 : Leer Dato(i) Repetir 5. Mostrar “El precio del lote es”, Valorlote FinMódulo
|
Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link: Ver curso completo.