El objetivo es que los resolváis (los que podáis)
en lenguaje algorítmico sobre papel, y de vez en cuando alguno de
ellos, tras hacerlo en papel, pasarlo a pascal y resolverlo en el
ordenador.
Muy Sencillos
- Leer una
cantidad de autobuses disponibles, y el nº de plazas por autobús, y
escribir cuantas personas pueden transportarse
- Dados el ancho y alto en metros de una parcela rectangular, y el
beneficio por m2, escribir el beneficio total (todos enteros)
- Dado un
número de libros, y un número de personas, decir cuantos libros tocan a
cada persona (cociente) y cuantos sobran (resto)
- Dada una fecha leída como un solo número ddmmaaa, escribirlo como
dd / mm / aaaa
- Dada una cantidad en monedas de 1céntimo, monedas de 5c, de 20c y
de 1€,
calcular el total de céntimos
Reales
- Leer
el radio (real) y
escribir el perímetro de la circunferencia
- Calcular el volumen de un depósito cilíndrico a partir del
radio de su
base y la altura
- Dados los kilos de grano cosechados (entero) y el precio de venta
por kilo (real), escribir las ganancias
- Pasar una cantidad real de Euros a Pesetas en entero (cambio: 1€
=
166,386Ptas)
Sentencia Condicional (si)
- Leer
un nº real y escribir
su valor absoluto
- Dado
un
nº de 3 cifras, decir si es capicúa
- Dada una nota decir si es un suspenso, aprobado, notable o
sobresaliente
- Leer
tres números reales y escribir el mayor.
- Dado una año decir si es bisiesto
- Dada un mes y un año decir cuantos días tiene ese mes
- Dados
3 números reales a,
b y c escribir las raíces, si son reales, de la ecuación de segundo
grado ax2 + bx +
c = 0
- En caso de que las raíces sean imaginarias, escribidlas en el
formato a+bi
- Calcular volúmenes dependiendo de un carácter
previo leído:
- A => pAralelepípedo (largo, ancho, alto)
=> l*a*h
- E => Esfera
(radio) => 4/3 pi r3
- I => cIlindro (radio,
altura) => pi r2 a
- O => cOno (radio,
altura) => 1/3 pi r2 a
- U => cUbo
(lado) => l3
Esquema de Recorrido
-
Recorrido con longitud conocida
- Escribir los cuadrados de los números del 1 al 100 ( 1,
4, 9, 16, ...)
- Escribir 100 múltiplos de 5 (0, 5, 10, ...)
[n*5 o n:=n+5]
- Dado
f(x)
= 3x2 + 5x – 3 escribir los f(x)
para x en [1..100]
- Escribir los 100 primeros nº múltiplos de 2 y de 3 (2, 3
,4, 6, 8, 9, 10, ...)
- Dada una secuencia de 50 notas decir si hay más aprobados o
suspensos
-
Recorrido
con centinela
- Calcular
la longitud de una frase acabada en
‘.’
- Ídem
sin contar los espacios en blanco
- Dada
una secuencia de 100 enteros decir cual es el mayor, el menor y la media
- Dada
una frase acabada en '.' reescribirla eliminando todos los caracteres
no alfabéticos (espacios, comas, ...)
- Dada
una frase acabada en '.' contar cuantas veces aparece la secuencia "LA"
- Dada
una frase acabada en '.' decir cuantas palabras empiezan por mayúscula
(una mayúscula
detrás de un blanco, y la primera palabra)
- Dada
una frase contar el
número de 'a's de la segunda palabra,
asegurando que hay más de 2 palabras.
- Dada
una
frase acabada en '.' decir la longitud de la palabra más larga (las
palabras acaban en blanco, o en el punto final.
- Ídem pudiendo haber varios blancos entre palabra y palabra
- Dado
un
texto acabado en '#' reescribirlo eliminando los comentarios que están
entre {...}, hacerlo con un booleano
- Cálculo de productividad de
campos de cultivo (2 ejercicios)
Esquema de Búsqueda
Complejidad media
Subprogramas
- Escribir
un procedimiento que dado un carácter, si es mayúscula lo pase a
minúscula, y si no lo deje igual
- Hacer un algoritmo que dada una secuencia de enteros positivos
acabada en -1 diga si
hay más pares o impares. Incluid una función que diga si un nº es
par:
función par (ent
n: entero): booleano
- Hacer
una función que dados 2 números calcule su potencia por medio
de productos
función potencia (ent
base, exponente: entero): entero
- Hacer una función que diga si un nº es perfecto, es decir si es
igual a la suma de sus
divisores (p.e.: 28
= 1+2+4+7+14 )
- Hacer una función que diga si un nº es primo
- Escribir
una función que calcule el máximo común divisor (mcd) de
dos números (a y b) por medio del algoritmo de
Euclides:
- si
a = b => mcd (a, b) = a
- si a
> b => mcd (a, b) = mcd
(a-b, b)
- si a < b =>
mcd (a, b) = mcd (a, b-a)
- Hacer
un procedimiento que dados dos números devuelva el máximo común divisor
y el mínimo común múltiplo de ambos, calculándolos por
descomposición de factores
- Dado
un recorrido como una secuencia de puntos (x,y), reales, acabada en el
pto (-1.0, -1.0), calcular la distancia recorrida. Hacer la función
"distancia" que calcule la distancia entre dos puntos. Siempre habrá al
menos dos puntos en la secuencia.
- Hacer una función que dado un entero x calcule ex
= 1 + x + x2/2! + x3/3! + … + xk/k!
hasta que xk/k!
< 0,001 (pista: para facilitar el cálculo de cada
término, no hace falta calcular en cada paso xn
ni x! sino
calcular un término en función del anterior)
- Dificultad
incremental:
- Hacer una función que calcule el factorial de un nº: función factorial (ent
n: entero) : entero
- Algoritmo que dada una secuencia de 100 nº diga si el factorial
de alguno de
ellos acaba en 7
- Algoritmo que dada una secuencia de 100 nº diga si el factorial
de alguno es un nº perfecto (definido antes)
- Algoritmo que dada una secuencia de 100 nº diga si hay 3 nº
cuyo factorial
sea un nº perfecto
- Algoritmo que dada una secuencia de 100 nº diga si hay 3 nº
consecutivos
cuyo factorial sea nº perfecto
Ejercicios completos
Tablas
- Leer
una palabra (secuencia de hasta 20 caracteres acabada en
blanco) y escribirla al revés
- Definir el tipo tabla de 50 caracteres, y hacer un subprograma
que, dado un vector ya rellenado, diga el porcentaje de
mayúsculas
- Definir un vector para almacenar 100 notas, y hacer un
subprograma que dado un vector
lleno, devuelva cuantas están por encima de la media.
- Leer los términos de 1 polinomio de grado 5 y un número, y
calcular el producto
escalar
- Leer los términos de 2 polinomios de grado 5, y calcular su
producto
vectorial
- Dada una frase acabada en '.' contar cuantas veces aparece cada
carácter (solo 'a..z'; mayúsculas = minúsculas).
- Dada una secuencia de enteros acaba en 0 (100 como máximo),
escribirla sin repetidos.
- Definir
una matriz 5 x 5, y hacer un subprograma que dada una matriz devuelva
su matriz traspuesta
- Definir una matriz 5 x 5, y hacer un subprograma que diga si una
matriz tiene todo ceros bajo su diagonal
principal
- Definir una matriz 5 x 5, y hacer un subprograma que calcule la
matriz suma de dos matrices,
- Definir una tabla de 100 reales, y hacer un subprograma que la
ordene por
selección
- Radar
de tramo: Dada una carretera de 5km, con un
par de
escáneres al inicio y al final, leer la secuencia de paso
de coches por los escáneres, con la matrícula (6 caracteres) y hora de
paso (Hora, Minuto, Segundo). Escribir las matrículas de los coches que
superen los 100Km/h. La
secuencia acaba en #.
- Leer una foto, creada por caracteres en una matriz, y:
- Reflejarla (voltearla de derecha a izquierda)
- Girarla 90º
- Ejemplos: Mona
Lisa, Pirata
(al leer la matriz, los saltos de línea saltadlos con "Readln")
Ejercicios Completos
Ordenados por complejidad de las tablas (que puede
ser diferente a la compleidad del algoritmo)
Registros
- Definir una tabla de 50 DNI, donde cada DNI tiene los campos: NIF
(nº y letra), nombre y dos apellidos (palabras de hasta 25 car),
dirección (tabla de 50 car.), población y provincia (palabras de hasta
25 car.), fecha de nacimiento y fecha de caducidad (registros con día,
mes, año). Leer y guardar toda la información y responder:
- ¿Cuantos se apellidan "García"?
- Escribir los que cumplan años
- Listar los NIF de los caducados
- Decir si hay dos personas que cumplan años el mismo día
- Escribir las poblaciones ordenadas por nº de habitantes