You are on page 1of 27

UNIVERSIDAD DE JAN

DEPARTAMENTO DE INFOMTICA
Fundamentos de Informtica
Relacin de Problemas I
Fundamentos de Informtica. Relacin de Problemas
2
Fundamentos de Informtica. Relacin de Problemas
1) En cul de los siguientes pares es importante el orden de los enunciados? En otras palabras, si se
modifica el orden de ellos, cambian los resultados finales? (Supngase que X<>Y<>Z).
a) XY
YZ
b) XY
ZX
c) XZ
XY
d) ZY
XY
2) Suponed que I y J son variables enteras cuyos valores son 6 y 12 respectivamente. Cules de las
siguientes condiciones son verdaderas?
a) 2*I <= J
b) 2*I-1 < J
c) I > 0 AND I <= 10
d) I > 25 OR (I < 50 AND J < 50)
e) I < 4 OR J > 5
f) NOT I > 6
3) Un departamento de climatologa ha realizado recientemente su conversin al sistema mtrico. Disear
un algoritmos para realizar las siguientes conversiones:
a) Leer la temperatura dada en la escala Celsius e imprimir en su equivalente Fahrenheit (la frmula de
conversin es F=9/5 C+32).
b) Leer la cantidad de agua en pulgadas e imprimir su equivalente en milmetros (25.5 mm = 1 pulgada).
4) El siguiente es el men de un restaurante de bocadillos. Disear un algoritmo capaz de leer el nmero
de unidades consumidas de cada alimento ordenado y calcular la cuenta total.
Bocadillo de jamn (250 pts)
Bocadillo de queso (200 pts)
Patatas fritas (100 pts)
Refresco (175 pts)
Cerveza (125 pts)
Total =
5) El costo de un automvil nuevo para el comprador es la suma total del costo del vehculo, del
porcentaje de la ganancia del vendedor y de los impuestos locales o estatales aplicables (sobre el precio
de venta). Suponer una ganancia del vendedor del 12% en todas las unidades y un impuesto del 6% y
disear un algoritmo para leer el costo total del automvil e imprimir el costo para el consumidor.
6) Disear un algoritmo para leer las longitudes de los tres lados de un tringulo (L1, L2, L3) y calcular el
rea del mismo de acuerdo con la siguiente frmula
) 3 )( 2 )( 1 ( L SP L SP L SP SP area
donde
2
3 2 1 L L L
SP
+ +

3
Fundamentos de Informtica. Relacin de Problemas
7) Disear un algoritmo capaz de leer un valor entero y de determinar si se trata de un n par o impar
(Generalizacin: que se lea m y n, dividir m a n?)
8) Dar tres formas diferentes de cambiar el siguiente bucle de forma que se ejecute 20 veces en lugar de
19. Cul de los tres cambios hace que el valor de Cont vaya desde 1 a 20?
Cont 1
MIENTRAS Cont < 20 HACER
Cont Cont+1
FIN_MIENTRAS
9) En cada uno de los siguientes segmentos de algoritmos, indicar cundo el ciclo termina y cundo no lo
hace. Suponer que todas las variables son enteras.
a) Contador 0
Total 0
MIENTRAS Contador >= 0 HACER
Total Total +2
FIN_MIENTRAS
b) Contador 0
Total 0
MIENTRAS Contador <= 10 HACER
Total Total +2
Contador Contador+1
FIN_MIENTRAS
10) Pepito est descontento con su rendimiento en la clase de fundamentos de informtica. En su primer
programa, cometi un error, en el segundo, cometi dos; en el tercero, cuatro; y as sucesivamente.
Resulta que siempre comete el doble de errores en cada nuevo programa que hace. La clase dura trece
semanas y se deben realizar dos problemas por semana. Disear un algoritmo que calcule el nmero de
errores que Pepito debe esperar cometer en su programa final, si se mantiene su rendimiento.
11) Disear un algoritmo par calcular la suma de los siguientes 100 trminos de la serie:
1 -1/2 1/4 -1/6 1/8 -1/10 1/12 -...
12) Un nmero se define como primo si no tiene otros divisores adems de 1 y de l mismo. Disear un
algoritmo para leer un nmero y determinar si se trata o no de un nmero primo.
13) Disear un algoritmo para imprimir la suma de los cuadrados de los 100 primeros nmeros enteros.
14) Los reglamentos de pesca imponen un lmite a la cantidad total permitida de kilos en un da de pesca.
Se supone que se planea llevar un computador porttil y se necesita un programa que indique cundo se
ha excedido dicho lmite. Disear un algoritmo que primero lea el lmite diario (en kg) y que luego lea los
valores de entrada uno tras otro (correspondern a los pesos individuales de las presas pescadas en el
orden en que se obtienen) e imprima un mensaje en el momento en que el lmite haya sido excedido. Un
peso de 0 indica el fin de los datos y, despus de que cada pescado haya sido registrado, el algoritmo
deber imprimir el peso total que se lleva hasta ese momento.
4
Fundamentos de Informtica. Relacin de Problemas
15) En cada uno de los siguientes segmentos indicar el valor que se imprimir para la variable Var.
Suponer que todas las variables son enteras.
a) Var 0
PARA i=1 HASTA 10 CON INCREMENTO DE 1
Var Var+1
FIN_PARA
ESCRIBIR Var
b) Var 0
PARA i=4 HASTA 36 CON INCREMENTO DE 4
Var Var+1
FIN_PARA
ESCRIBIR Var
c) Var 0
PARA i=1 HASTA 14 CON INCREMENTO DE 1
PARA j=1 HASTA 8 CON INCREMENTO DE 1
Var Var+1
FIN_PARA
FIN_PARA
ESCRIBIR Var
16) Una persona acaba de regresar de una reciente gira automovilstica. En cada parada para cargar
combustible apunt la lectura del odmetro y la cantidad de combustible comprado (se supone que en
cada ocasin llen el depsito). Adems, se supone que carg combustible inmediatamente antes de salir
de viaje e inmediatamente despus de regresar, tomando las lecturas del odmetro en ambos casos.
Disear un algoritmo para leer primero el nmero total de paradas que efectu (incluyendo la inicial y la
ltima) y que lea los datos relativos al combustible, calculando posteriormente:
a) El rendimiento alcanzado en kilmetros por litro entre cada par de detenciones.
b) El rendimiento alcanzado en Km por litro durante la totalidad del viaje.
17) a) en matemticas, la siguiente expresin es siempre verdadera:
1 ) sen( x
Disear un algoritmo para verificar esta propiedad en la funcin interna SIN para los valores de
x que van de -10.0 hasta +10.0 en pasos de 0.2.
b) En matemticas, la siguiente propiedad se cumple:
y x que siempre y x
Disear un algoritmo para comprobar que la funcin interna SQRT cumple esta condicin para
valores enteros de x e y en el intervalo de 0 a 100.
5
Fundamentos de Informtica. Relacin de Problemas
18) a) Disear un algoritmo para calcular los ahorros que se tendran al final de diez aos si se
depositara mensualmente la cantidad de 10.000 pts. Se supone una tasa constante de inters
anual del 6% capitalizable cada seis meses (es decir, se agregan al capital los intereses del 3%
cada seis meses).
b) Se desea invertir una determinada cantidad de dinero de manera que llegue a ser X pts en Y
aos. Si la tasa actual de inters es R% entonces la cantidad a invertir (el valor presente de X)
est dado por la siguiente frmula
Y
R
X
) * 01 . 0 1 ( +
Disear un algoritmo que imprima el valor presente de 5000 pts. al 7.5% de inters, para
perodos de uno a veintin aos, en pasos de dos aos.
19) La criba de Eratstenes, renombrado astrnomo y gegrafo griego del siglo III a. De C., es una
tcnica para generar nmeros primos. Se comienza escribiendo todos los enteros impares desde 3 hasta N;
luego se elimina cada tercer elemento despus de 3, cada quinto elemento despus de 5, etc., hasta que los
mltiplos de todos los enteros impares menores que N hayan sido eliminados. Los enteros que
quedan constituyen la lista exacta de los nmeros primos entre 3 y N. Disear un algoritmo para generar
los nmeros primos entre 3 y N, utilizando la tcnica de la criba.
Basndonos en que conocemos los nmeros primos menores que un nmero dado, realizar un
algoritmo que descomponga un nmero dado en productos de nmeros primos.
20) Formular un algoritmo para convertir nmeros enteros decimales (en base 10) a sus respectivas
representaciones octales (en base 8), por medio de sucesivas divisiones. La variable NUMERO contiene
el entero que se va a transformar y BASE la base a la cual se va a convertir (8 en este caso). Por ejemplo,
para calcular la representacin octal de 150, se divide sucesivamente por 8 y los restos que van quedando
se almacenan ordenadamente.
Paso Dividendo Divisor Cociente Resto
1 150 8 18 6
2 18 8 2 2
2268 = 2*8
2
+2*8
1
+6*8
0
=15010
Generalizar y que haga un cambio de base dando como dato la base a la que se quiera pasar.
21) En todo experimento existe cierta cantidad de incertidumbre asociada con cualquier medicin. Una
tcnica conocida como ajuste de curvas puede utilizarse para reducir el error en el anlisis de estos
resultados. Se supone que una serie de valores reales ha sido registrada de N repeticiones de un
experimento en particular, los cuales se almacenan en un vector llamado V. Antes de proceder al anlisis
de estos resultados experimentales, la siguiente operacin de ajuste simple debe aplicarse a los valores de
V. Para cada valor (excepto el primero y el ltimo, los que deben permanecer sin cambios), Vi debe
reemplazarse por
3
1 1 +
+ +
i i i
V V V
Disear un algoritmo para leer las mediciones iniciales y en seguida imprimir los valores
observados y los ajustados. Estos ltimos valores debern ser almacenados en un vector separado
llamado RESULTADO.
6
Fundamentos de Informtica. Relacin de Problemas
22) Desarrollar un algoritmo que elimine todos los espacios finales en una hilera determinada. Por
ejemplo, la hilera El origen del universo deber transformarse en El origen del universo.
23) Formular un algoritmo cuya entrada sea una hilera S y un factor de multiplicacin N, cuya funcin
sea generar la hilera dada N veces. Por ejemplo, los resultados correspondientes a la entrada FI, 3
debern ser FIFIFI.
24) Disear una funcin con dos parmetros x y n, de forma que devuelva:

'

<
+

+
+
+
+
0
1 1
0
2
1 1
2
x si
n
x
n
x
x si
n
x
n
x
x
n n
n n
25) La funcin MOD(x,y) se define como el resto que resulta de la divisin de x por y (siendo ambos
enteros, al igual que el resto). Por ejemplo MOD(8,3) es 2. Formular una funcin que calcule MOD(x,y).
26) a) Disear una funcin SIGMA para calcular la suma de los n elementos de un vector X (X y n
son los parmetros de la funcin).
n
n
i
i
x x x x x + + + +

3 2 1
1
Disear la funcin PROD para calcular el producto de los n elementos de un vector X (de nuevo
X y n son los parmetros de la funcin).
n
n
i
x x x x


3 2 1 1
27) Disear un procedimiento que acepte como parmetro un vector que pueda contener elementos
duplicados. El procedimiento debe reemplazar cada elemento repetido por -1 y regresar al punto de
llamada el vector modificado, adems del nmero de modificaciones hecho.
28) Realizar un procedimiento que acepte como parmetro un vector arbitrario de elementos numricos.
Este procedimiento debe ordenar los elementos y regresar el vector ordenado por medio del mismo
parmetro. Qu tipo de paso de parmetros se requiere? Por qu?
29) Disea un algoritmo que lea un array de caracteres hasta que se introduzca un punto, y que de cmo
salida el nmero de comas encontradas, y el nmero de caracteres ledos.
30) Escribe un algoritmo que calcule el valor de S para un nmero real X dado, utilizando la siguiente
serie:
El valor de S se calcular de tal manera que el error del trmino debe ser menor que 0.0001.
31) Disea un algoritmo que lea en un array N nmeros reales y determine el mayor, el menor y la media
de los nmeros ledos.
7
+ + + + +
! 4 ! 3 ! 2
1
4 3 2
X X X
X S
Fundamentos de Informtica. Relacin de Problemas
32) La constante juega un papel muy importante en matemticas, por lo que no debe sorprender que
existan muchos mtodos capaces de proporcionar aproximaciones numricas de . Muchos de estos
mtodos implican operaciones con una serie infinita. Tres de ellos son los siguientes.
)
7
1
5
1
3
1
1 ( 4
1 2
) 1 (
4
0
+ +
+

i
i
i

+ + +

2 2
1
2
3
6
2
6
6
6
i
i

7
8
7
6
5
6
5
4
3
4
3
2
4
Durante los clculos prcticos, las series infinitas deben limitarse a un nmero finito de trminos,
sacrificando con ello la precisin del resultado.
Disear las funciones necesarias para calcular de acuerdo con cada uno de los mtodos
expresados antes. Cada funcin debe aceptar, como parmetro, el valor de N que indica el nmero de
trminos que van a tomar parte en los clculos.
33) Se necesita una funcin con dos parmetros; el primero es el nombre de un vector y el segundo es un
valor que debe buscarse en ese vector. La funcin debe regresar un 1 si el valor se encuentra en el vector,
y un 0 si la bsqueda es infructuosa. Ni el vector ni el valor deben ser alterados. Qu tipo de parmetros
es preferible? Por qu?
34) Cuntas veces se ejecutar la Accin 1?
Cont 0
MIENTRAS Cont<10 HACER
Cont cont+1
SI Cont=10
ENTONCES
Accion 1
FIN_SI
FIN_MIENTRAS
35) Considerar el siguiente procedimiento llamado Swap, que tiene los parmetros X y Y. Se supone que
T es una variable local.
PROCEDIMIENTO Swap(X,Y)
INICIO
TX
XY
YX
FIN
El procedimiento debe usarse en los siguientes enunciados, donde A es un vector de elementos.
I1
8
Fundamentos de Informtica. Relacin de Problemas
A(1)2
A(2)0
Swap(I,A(1))
ESCRIBIR I,A(1),A(2)
Proporcionar los resultados del enunciado de escritura bajo las siguientes circunstancias,
explicando con detalle lo que sucede en cada caso:
a) La correspondencia entre parmetros formales y actuales se establece por paso por valor.
b) La correspondencia entre parmetros formales y actuales se establece por paso por variable.
36) Cul es el valor de la variable booleana test despus de la ejecucin de los siguientes bucles?
test VERDAD
PARA contador=1 HASTA N
test NOT test
FIN_PARA
test N MOD 2 = 0
PARA contador=1 HASTA N
test NOT test
FIN_PARA
37) Disear un algoritmo para convertir un tiempo expresado en segundos a un formato que lo represente
en horas, minutos y segundos.
38) Escribe un subalgoritmo al que se le de un nmero natural N y dibuje un tringulo de asteriscos con
base y altura N. Por ejemplo si N=5 debera dibujar:
39) Disea un subalgorimo al que se le de un nmero natural N y un carcter. La salida debe ser una
figura compuesta por repeticin del dicho carcter y de anchura especificada por N. Por ejemplo si
es carcter es * y la anchura 5 la figura tendr la siguiente forma:
9
*
* *
* * *
* * * *
* * * * *
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
Fundamentos de Informtica. Relacin de Problemas

40) Escribe un algoritmo que lea una secuencia de nmeros enteros terminada en 0 y pida un nmero a
buscar y escriba en pantalla la posicin de la primera y la ltima ocurrencia del nmero dentro de la
secuencia. Si el nmero no est el algoritmo debe escribir un 0. Si el nmero slo est una vez entonces
las posiciones primera y ltima coinciden.
41) Disea un algoritmo que encuentre todos los nmeros primos menores que un nmero N dado.
42) Considera el siguiente procedimiento:
PROCEDIMIENTO Escr(ch: CARCTER, long: ENTERO)
INICIO
MIENTRAS long>0 HACER
ESCRIBIR ch
Long long -1
FIN_MIENTRAS
FIN
a) Si ch tiene el valor X y numero el valor 5, cul sera el efecto de ejecutar cada una de las
siguientes llamadas al procedimiento?
Escr(ch,4*numero-12) Escr(ch,6) Escr(5,numero)
Escr(/,numero) Escr(.,6) Escr(p,-10)
b) Escribe llamadas al procedimiento Escr para que cuando se ejecuten produzcan las siguientes salidas:
35 guiones sucesivos
6 veces tantos espacios en blanco como el valor de numero
el valor actual de ch 14 veces
43) Ejecuta el siguiente algoritmo mostrando qu escribira en pantalla:
ALGORITMO uno
VARIABLES: a, b, c: ENTERO
INICIO
a 5
b 8
c 3
dos(a,b,c)
dos(7,a+b+c,a)
dos(a*b,a DIV b,c)
FIN
ALGORITMO dos(x, y: ENTERO, VAR z: ENTERO )
INICIO
z x+y+z
ESCRIBIR x, y, z
10
Fundamentos de Informtica. Relacin de Problemas
FIN
44) Dadas la siguientes declaraciones en un determinado algoritmo:
a, b, c : ENTERO
si: LOGICO

y las siguientes declaraciones de subalgoritmos:


FUNCION uno(x, y: ENTERO): LOGICO
...
PROCEDIMIENTO dos(VAR x, y: ENTERO)
...
FUNCION tres(x: ENTERO): ENTERO
...
Cules de las siguientes llamadas a los subalgoritmos desde el cuerpo del algoritmo principal, son
vlidas y por qu?
a) SI uno(a, b)
ENTONCES ...
b) si dos(c,5)
c) SI tres(a)
d) dos(a, b+3)
e) dos(a, tres(a))
f) btres(dos(a,5))
g) si uno(c, 5)
h) dos(tres(b), c)
i) dos(4, c)
ENTONCES
45) Qu salida produce la ejecucin del siguiente algoritmo?
ALGORITMO Anidado
VARIABLES: a, b, c, x, y: ENTERO
INICIO
a 3
b 2
c 1
x 11
y 22
Primero(x, a, b)
Segundo(c,a)
Tercero(a, b)
ESCRIBIR Anidado, a, b, c, x, y
FIN
PROCEDIMIENTO Primero (a, b, VAR c: ENTERO)
VARIABLES: a, b, c: ENTERO
INICIO
a 3*a
c c+ 4
ESCRIBIR Primero, a, b, c
11
Fundamentos de Informtica. Relacin de Problemas
FIN
12
Fundamentos de Informtica. Relacin de Problemas
PROCEDIMIENTO Segundo(a, c: ENTERO)
VARIABLES: b: ENTERO
INICIO
b 8
c a+c+b DIV 3
ESCRIBIR Segundo, a, b, c
FIN
PROCEDIMIENTO Tercero(VAR x, y: ENTERO)
INICIO
x x+4; y y+1
ESCRIBIR Tercero, a, b, c, x, y
FIN
46) Disea una funcin a la que se de como entradas 3 parmetros: dos de tipo entero y uno de tipo
carcter. La funcin deber sumar, restar, multiplicar o dividir los valores de los dos primeros parmetros
dependiendo del cdigo indicado en el tercer parmetro, y devolver el resultado.
47) Disea un algoritmo que lea una secuencia de caracteres que representan el primer apellido y el/los
nombre/s de una persona, separados por espacios en blanco, y que de como salida el apellido, seguido por
una coma, seguido de un blanco, seguido de la inicial del nombre/s con un punto.
Ejemplo: si se lee Pepe Juan Garca, el algoritmo debe escribir Garca, P. J.
48) Dos nmeros a y b se dicen que son amigos si la suma de los divisores de a (salvo l mismo) coincide
con b y viceversa. Disea un algoritmo que tenga como entrada dos nmeros naturales n y m y que
muestre en pantalla todas las parejas de nmeros amigos que existan en el intervalo determinado por n y
m.
49) Escribe un algoritmo que acepte como entrada desde teclado un nmero entero positivo y de como
salida el resultado de sumar dos a dos los dgitos que aparecen en posiciones simtricas respecto al dgito
central dentro del nmero dado como entrada. Por ejemplo:
Para el nmero 2354869, la salida es: 2+9=11, 3+6=9, 5+8=13, 4
Para el nmero 6582, la salida es: 6+2=8, 5+8=13
50) Disea una funcin que calcule el producto escalar de vectores.
51) Disear un subalgoritmo al que se le de cmo entrada dos array de enteros ordenados de forma
creciente y devuelva como salida una array ordenado crecientemente formado por los elementos de las
entradas y sin incluir los elementos repetidos.
52) Disear un subalgoritmo que devuelva VERDAD si los dos arrays dados como entrada son iguales y
FALSO, en otro caso.
53) La moda de un array de vocales es la vocal que se repite ms frecuentemente. Si varias vocales se
repiten con la misma frecuencia mxima, entonces no hay moda. Escribe un subalgoritmo que acepte un
array de caracteres y devuelva su moda o una indicacin de que la moda no existe.
13
Fundamentos de Informtica. Relacin de Problemas
54) Escribe un algoritmo que lea una secuencia de nmeros enteros positivos, encuentre el valor mximo
y lo imprima junto con el nmero de veces que aparece, y las posiciones en que ocurre.
55) Disear un calculador de nmeros romanos.
La mayora de la gente no sabe que la notacin numrica romana sustractiva usada comnmente hoy (en
la que IV significa 4) se usaba raramente en el tiempo de la Repblica Romana y el Imperio. Para
facilidad del clculo, los romanos utilizaban ms frecuentemente una notacin aditiva pura en la cual un
nmero era simplemente igual a la suma de sus dgitos (4 igual a IIII en esta notacin). Cada nmero
comienza con el dgito del valor ms alto y termina con el valor ms pequeo. Esta es la notacin que
usaremos en este problema.
El algoritmo pedir dos nmeros romanos y un operador aritmtico e imprimir el resultado de la
operacin, tambin como un nmero romano. Los valores de los dgitos romanos son:
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
Por tanto, el nmero MDCCCCLXXXXVI representa a 1996. Los operadores aritmticos que reconocer
el algoritmo en la entrada son +,-,* y /.
Una forma de enfocar este problema es convertir los nmeros romanos a enteros, ejecutar la
operacin requerida y luego convertir el resultado de nuevo a nmeros romanos para imprimirlos.
56) Dada una matriz PUNTUACION cuyos elementos PUNTUACION (I,J) contienen la J-sima
calificacin del I-simo estudiante y un array de ponderaciones PESOS, cuyo elemento PESOS (J)
denota la ponderacin correspondiente al J-simo problema de un examen, construir un programa que
establezca niveles entre los estudiantes. Los niveles deben registrarse en una matriz aparte llamada
CLASIFICA, de forma que CLASIFICA (I) indique la posicin del I-simo estudiante de la clase. El
programa debe leer los datos de entrada para N estudiantes y M problemas (es decir, para cualquier
nmero). Por ejemplo, los siguientes vectores contienen la clasificacin, los problemas y la informacin
del nivel de un curso compuesto de cinco estudiantes y de un examen de tres problemas. En este ejemplo,
el promedio del primer estudiantes es:
3 . 73
6
85 1 80 2 65 3

+ +
con lo cual este estudiante se clasifica cuarto en el curso de cinco asistentes.
PESOS
3 2 1
PUNTUACION
65 80 85
80 60 90
75 50 50
100 50 75
100 80 7
CLASIFICA
4
3
5
2
1
14
Fundamentos de Informtica. Relacin de Problemas
57) Dada una matriz A de tamao NxM (M y N nmeros mltiplos de 3) escribir un procedimiento que
obtenga otra matriz B de tamao (N/3xM/3) formada por la suma de todas las submatrices disjuntas de
orden 3x3 que se pueden formar en A.
58) Realizar un procedimiento que permita reestructurar un array a partir de un elemento dado segn el
siguiente ejemplo:
Array inicial: 3-20-8-40
Valor de reorganizacin: 8
Array final: 8-40-3-20
59) Una analista de imgenes desea trasvasar su imagen digitalizada (es decir, dada como una matriz
bidimensional de enteros entre 0 y 20) a una imagen en blanco y negro y visualizarla por pantalla.
Se considera que el punto identificado como el elemento (i,j) de la matriz es negro si la suma de
ese elemento junto con los cuatro circundantes de la matriz dividida entre 5 es mayor que 10 (en este caso
ese punto se transforma en 20, el valor correspondiente al negro).
Confeccionar un procedimiento que tome la imagen digitalizada inicial y que devuelva la imagen
en blanco y negro.
60) Dado el Tipo Abstracto de Datos Lista, realizar primitivas (procedimientos y/o funciones) capaces
de resolver los siguientes problemas:
a) Crear una lista.
b) Introducir un elemento al final de la lista.
c) Introducir un elemento al principio de la lista.
d) Eliminar un elemento del comienzo de la lista.
e) Eliminar el ultimo elemento de la lista.
f) Decir si la lista esta o no vaca.
g) Insertar un elemento en una lista ordenada, pera que siga estando ordenada.
h) Buscar un elemento en la lista y devolver la posicin que ocupa en dicha lista.
i) Eliminar el n-simo elemento de una lista.
j) Concatenar dos listas.
k) Realizar la copia de una lista.
l) Determinar si los elementos de una lista estn o no ordenados.
61) Realizar una serie de subprogramas capaces de tomar dos matrices cuadradas de dimensin N y
realizar:
a) Suma de matrices
b) Resta de matrices
c) Producto de matrices.
62) Realizar un subprograma que tome una matriz y construya su determinante.
15
Fundamentos de Informtica. Relacin de Problemas
63) Desarrollar un algoritmo para imprimir un calendario para un ao, dado el ao y da de la semana en
que cae el 1 de enero. Puede ayudarle a pensar en esta tarea como la de imprimir 12 calendarios, uno para
cada mes, dado el da de la semana en que comienza un mes y el nmero de das del mes. Cada mes
sucesivo comienza en el da de la semana que sigue al ltimo da del mes precedente. Hay que considerar
de forma especial los aos que son bisiestos.
64) Disear un algoritmo que integre numricamente la funcin X
3
en un rango especificado por el
usuario. En otras palabras, dado un par de nmeros reales, encontrar el rea bajo la grfica de X
3
entre
estos dos nmeros.
Para ello, se calcular una aproximacin a esta rea. Si se divide el rea bajo la curva en tiras
rectangulares delgadas, la suma de las reas de estos rectngulos (divisiones) ser aproximadamente igual
al rea existente bajo la curva. Mientras ms estrechos se hagan los rectngulos, ms precisa ser la
aproximacin. Se supondr que el usuario introduce los valores inferior y superior de la funcin, as como
el nmero de rectngulos en los cuales ha de subdividirse el rea.
65) Una compaa de venta de coches de segunda mano paga a su personal de ventas un salario de 50.000
pesetas, ms una comisin de 5.000 por cada automvil vendido, ms el 5% del valor de la venta. Cada
mes, el contador de la empresa prepara una lista para cada agente de ventas que contiene su nombre, el
nmero de vehculos vendidos y el valor de cada uno de stos. Disear un algoritmo para calcular e
imprimir el salario de un vendedor para un mes dado. Probar el algoritmo con datos de prueba.
66) La distancia del punto de cada de un proyectil que es lanzado con un ngulo Angulo (en radianes)
con una velocidad inicial de Velocidad (en pies por segundo), ignorando la resistencia del aire, viene dada
por la frmula
2 . 32
) 2 sen( Angulo Velocidad
Distancia

Escribir un algoritmo que realice un juego en el que el usuario introduce primero la distancia a
una diana. Luego el usuario introduce el ngulo y la velocidad de lanzamiento de un proyectil. Si el
proyectil cae dentro de un diez por ciento de la distancia a la diana, el usuario gana el juego. Si el
proyectil no se acerca lo suficiente, se le dice al usuario cunto se ha alejado el proyectil y se le permite
intentarlo de nuevo. Si despus de cinco intentos, no ha introducido ninguna entrada ganadora, entonces
el usuario pierde el juego.
Para simplificar las entradas del usuario, el programa debe permitir que el ngulo de la entrada se
d en grados. La frmula para convertir los grados en radianes es
Radianes = Cgrados * 3.14159265 / 180.0
Cada frmula de este problema se debe disear como una funcin.
67) Una lista de las tasas de cambio de moneda extranjera durante 1977 proporciona las siguientes
equivalencias:
100 francos franceses = 21.55 dlares canadienses
1 libra britnica = 1.84 dlares canadienses
100 dracmas griegas = 2.95 dlares canadienses
100 florines holandeses = 43.20 dlares canadienses
1 dlar norteamericano = 1.06 dlares canadienses.
Desarrollar algoritmos para realizar las siguientes conversiones:
16
Fundamentos de Informtica. Relacin de Problemas
a) Leer una cierta cantidad de francos franceses e imprimir el equivalente en libras
britnicas.
b) Leer una cantidad en dracmas griegas e imprimir el equivalente en libras britnicas.
c) Leer una cantidad en dlares canadienses e imprimir el equivalente tanto en dlares
norteamericanos como en florines holandeses.
d) Leer una cantidad en dlares norteamericanos e imprimir el equivalente tanto en
coronas suecas como en francos franceses.
68) Un sistema de ecuaciones lineales de la forma:
ax + by = c
dx + ey = f
puede resolverse utilizando las siguientes frmulas:
bd ae
cd af
y
bd ae
bf ce
x

Disear un algoritmo para leer los dos conjuntos de coeficientes (a, b y c, y d, e y f) e imprimir
los valores que son solucin para x e y. Existen algunos casos para los cuales este algoritmo no
funcione?.
69) El coste del seguro contra heladas y granizo en una localidad agrcola es el 3.5% del monto deseado
por acre, multiplicado por el nmero de acres sembrados. Suponiendo que las semillas por cosechar se
limitan a trigo, avena y cebada, disear un algoritmo que lea el monto cubierto y el nmero de acres
sembrados con cada una de las variedades, y que calcule el costo total de la pliza.
70) Aunque la velocidad de la luz permanece constante a pesar de las velocidades relativas de la fuente
luminosa y del observador, la frecuencia medida y la longitud de onda s cambian, efecto denominado
efecto Doppler. La longitud de onda emitida por la fuente que se mueve hacia el observador con
velocidad v parece comprimirse en , la cual est dada por la frmula:
c
v
, donde c es la velocidad
de la luz. Suponer que una aeronave viaja hacia una estacin de radio a una velocidad constante de 360
km/h (100.000 cm/s). Si la estacin de radio est emitiendo con una longitud de onda de 30 m, la
variacin de la longitud de onda debida al efecto Doppler es:
cm
s cm
cm s cm
c
v
3
10
10
/ 10 3
) 1000 3 ( ) / 10000 (

De esta forma, el piloto de esta aeronave debe ajustar su aparato receptor de 3000 cm menos 10
-3
cm, o sea, 2999.999 cm hasta que llegue a la estacin y, en seguida, ajustarlo a una longitud de onda de
3000.001 cm puesto que se aleja de la estacin transmisora. Disear un algoritmo para leer la longitud de
onda de la estacin transmisora y la velocidad de aproximacin de la nave. Finalmente, deber imprimir
la sintona real a la que se recibe la seal.
71) Disear un algoritmo que determine la longitud de la hipotenusa de un tringulo rectngulo dadas las
longitudes de los otros dos lados.
72) Cmo de alto es un arco iris? Debido a que el camino de la luz es refractado por de agua, el ngulo
entre el nivel de sus ojos y la cima de un arco iris es siempre el mismo. Si sabe la distancia al arco iris,
17
Fundamentos de Informtica. Relacin de Problemas
puede multiplicarla por la tangente de dicho ngulo para encontrar la altura del arco iris. El ngulo
mgico es 41.33333333 grados.
En algunas ocasiones ver durante un segundo, un arco iris dbil exterior a un arco iris luminoso.
Este arco iris secundario tiene de ngulo mgico 52.25 grados. Disear un algoritmo que a partir de la
distancia al arco iris, calcule la altura del arco iris principal y secundario.
73) Disear un algoritmo que lea tres nmeros enteros. Si el primero es negativo, imprimir el producto de
los tres. Si no, imprimir la suma de los tres.
74) Realizar un algoritmo que lea una temperatura en grados Centgrados, la transforme en grados
Fahreneit y escriba qu deporte es apropiado para esa temperatura, usando los siguientes criterios:
Deporte Temperatura
Natacin >85
Tenis 70 < temp 85
Golf 32 < temp 70
Esqu 10 < temp 32
Damas Chinas 10
75) El istopo radiactivo plutonio-235 tiene una vida media de 26 minutos. La vida media es el tiempo
que se necesita para que se degenere la mitad del istopo. Por tanto, despus de 26 minutos slo quedar
la mitad del istopo. Despus de otros 26 minutos, slo quedar la mitad de esa mitad, o un cuarto de la
cantidad original. Escribir un algoritmo que determine cunto tiempo (el tiempo de vida ms cercano)
necesita el plutonio-235 para degenerarse hasta que quede un porcentaje determinado. El porcentaje es un
valor real introducido por el usuario.
76) Qu escribir el siguiente bucle?
Numero 1
MIENTRAS Numero < 11 HACER
Numero Numero + 1
ESCRIBIR Numero
FIN_MIENTRAS
77) Cambiando simplemente el orden de las sentencias (sin cambiar cmo se ha escrito ninguna de ellas),
hacer que el bucle del ejercicio anterior escriba los nmeros del 1 al 10.
78) Realiza un algoritmo que calcule el m.c.d (mximo comn divisor) de dos nmeros empleando el
algoritmo de Euclides, el cual se puede describir as: dados dos enteros a y b, se divide a por b,
obteniendo el cociente q1 y el resto r1. Si r1 <> 0, se divide b por r1, obteniendo el cociente q2 y el resto r2.
Si r2 es tambin distinto de 0, el proceso se sigue repitiendo hasta que el resto sea cero. El m.c.d ser el
resto anterior.
18
Fundamentos de Informtica. Relacin de Problemas
79) Cuando se ejecuta el siguiente algoritmo, cuntas iteraciones del bucle se realizarn?
Numero 2
hecho falso
MIENTRAS NO hecho HACER
Numero Numero * 2
SI Numero > 64
ENTONCES hecho verdadero
FIN_MIENTRAS
80) Un equipo de ftbol ha tenido una buena campaa y desea premiar a sus jugadores con un aumento
del salario para la siguiente campaa. Los sueldos deben ajustarse de la siguiente forma:
Sueldo actual Aumento
0-1000000 20%
1000000-1300000 10%
1300000-2000000 5%
ms de 2000000 -
El equipo tiene un cuadro de 20 jugadores. Disear un algoritmo que lea el nombre del jugador y
su salario actual, y que a continuacin imprima el nombre, el sueldo actual y el sueldo aumentado. Al
final de la lista debe proporcionar, tambin, el monto total de la nmina actual y el monto total de la
nueva nmina que incluye los aumentos mencionados.
81) Ciertos estudiantes han presentado cinco calificaciones (A, B, C, D y E) y se requiere determinar,
para las estadsticas, el nmero de:
a) los que aprobaron todos los exmenes.
b) los que aprobaron A, B y C pero no D o E.
c) los que aprobaron A y B, C o D, pero no E
Disear un algoritmo apropiado.
82) Realiza un algoritmo que muestre en pantalla los k primeros primos. Vamos a hacer un diseo
modular y vamos a descomponer nuestro problema en un subalgoritmo que se encargue de decidir si el
nmero que le damos es o no primo, otro subalgoritmo que dado el nmero de primos que queremos (k),
nos devuelva los k primeros primos; el algoritmo principal se ocupar de leer los datos de entrada y de
devolvernos la salida.
83) Realizar un procedimiento que tenga como entradas una matriz bidimensional de enteros, sus
dimensiones (nmero de filas y de columnas) y un nmero entero , y como salida el nmero de veces que
el nmero aparece en la matriz.
84) Realizar una funcin que tenga como entradas un array de enteros (X) y el nmero de elementos que
tiene e implemente el clculo siguiente con ellos:
19

+
n
i
i
i
x
1
1
!
Fundamentos de Informtica. Relacin de Problemas
85) Cules son los contenidos de Suma y Numero al final del seguimiento del siguiente algoritmo?
ALGORITMO Pretexto
INICIO
n 0
i 1
indicador falso
MIENTRAS i <= n Y NO indicador HACER
LEER Numero
SI Numero > 0
ENTONCES Suma Suma + Numero
SI NO
SI Numero = 0
ENTONCES indicador True
FIN_SI
ii+1
FIN_SI
FIN_MIENTRAS
ESCRIBIR Fin de la prueba. , Suma, Numero
FIN
86) Escribir un fragmento de algoritmo que haga igual que el de abajo, pero utilizando ciclos REPETIR-
HASTA.
...
Cuenta 0
termino FALSO
MIENTRAS NOT termino HACER
LEER car
SI car=centinela
ENTONCES termino VERDAD
SI NO cuenta cuenta+1
FIN_SI
FIN_MIENTRAS
...
87) En un instituto cartogrfico, se clasifican los terrenos segn su altitud en:
Montaas: altura de ms de 500 metros.
Llanos: altura entre 101 y 500 metros.
Valles: altura entre 0 y 100 metros.
20
Fundamentos de Informtica. Relacin de Problemas
Para calcular altura de una determinada zona se considera dividida dicha zona en una cuadrcula
de 100 por 100 puntos, se mide la altitud de cada uno de los puntos y se haya la media.
Realizar un subalgoritmo al que se le de cmo entrada una tabla en la que se han almacenado la
altura de los puntos que representan un terreno y determine de qu tipo es el terreno, segn la
clasificacin por altura.
88) a) Disear una funcin a la que se le de cmo entrada dos parmetros y debe dar como salida el
resultado de elevar el primer parmetro al segundo (el primer argumento es la base y el segundo el
exponente).
b) Existen muchos mtodos capaces de proporcionar aproximaciones numricas de . Uno de ellos es
el siguiente:
Disea un algoritmo que lea el grado de aproximacin (nmero de trminos de la sumatoria) y
devuelva un valor aproximado de . Para realizar las potencias utilizar la funcin del apartado a.
89) Realizar un subalgoritmo que tenga como entrada un array de enteros positivos, del cual no se sabe
su longitud (ni se puede utilizar ninguna funcin para saberla), un valor que indica la marca de fin del
array. El subalgoritmo debe devolver como salida un array de tamao 3 que contenga los tres
elementos mayores del array de entrada. Qu tipo de subalgoritmo has utilizado? Por qu?
90) Completar los siguientes fragmentos de pseudocdigo para que hagan lo que se indica. Se supone que
el nmero de elementos del vector est almacenado en la variable N y que las nicas variables que se
pueden utilizar son las que aparecen en dicho fragmento:
a) Suma de los valores de un vector
suma
indice
MIENTRAS HACER
suma suma +v(indice)
FIN_MIENTRAS
b) Mayor valor de un vector
mayor
MIENTRAS HACER
SI
ENTONCES
v(indice)
FIN_SI
FIN_MIENTRAS
21

1
2
6
i
i

Fundamentos de Informtica. Relacin de Problemas


c) Media de los valores del vector
indice
MIENTRAS HACER
media v(indice)
FIN_MIENTRAS
91) a) Disear un subalgoritmo al que se le de un entero, y devuelva los divisores de dicho nmero y la
cantidad de divisores que tiene.
b) Disear un subalgoritmo que reciba como entradas un nmero entero, y devuelva 1 si la suma de
divisores es igual al nmero y 0 en otro caso. Para conocer los divisores utilizar el subalgoritmo del
apartado anterior.
Disear un algoritmo que devuelva los k primeros nmeros perfectos, apoyndose en los
subalgoritmos anteriores. (Un nmero perfecto es aquel para el que se cumple que la suma de sus
divisores es igual al propio nmero).
92) Supongamos el siguiente fragmento en pseudocdigo:
numalum leealumnos(nombre)
PARA j=1 HASTA numalum CON INCREMENTO DE 1
leernota(vectornota, tamano)
PARA i=1 HASTA tamano CON INCREMENTO DE 1
vectorpeso(i) pondera(y)
FIN_PARA
media calculo(vectornota,vectorpeso,tamano)
ESCRIBIR La nota media del alumno,nombre(i), es:,media
FIN_PARA
Indica cules de las llamadas a subalgoritmos son a funciones y cules a procedimientos. De las
variables que aparecen cules son de tipo simple y cuales de tipo estructurado.
93) a) Disear un subalgoritmo que reciba como entradas un entero positivo y una cota (otro entero
positivo) y devuelva los mltiplos del primer argumento menores o iguales que la cota. Explicar la
eleccin de ese tipo de subalgoritmo.
b) Disear un algoritmo que lea dos enteros positivos y de como salida el m.c.m (mnimo comn
mltiplo) de las entradas.
Nota: para realizar el algoritmo nos apoyaremos en el apartado a), ya que sabemos que el m.c.m es el
primer elemento que nos encontramos coincidente en la secuencia de mltiplos de los dos nmeros y
que es menor o igual al producto de los dos nmeros.
Ejemplo: suponemos que queremos calcular el m.c.m de 6 y 4:
Secuencia de mltiplos de 6: 6, 12, 18, 24.
22
Fundamentos de Informtica. Relacin de Problemas
Secuencia de mltiplos de 4: 4, 8, 12, 16, 20, 24.
El primer elemento comn en las dos secuencias es el 12, luego ese es el m.c.m(4,6).
94) Disear en pseudocdigo los ejercicios siguientes:
a) Un subalgoritmo que reciba como entradas una matriz de enteros, sus dimensiones, un array y
una distancia (un entero positivo). El contenido de la matriz son distancias, el elemento (i,j) es
un entero positivo que indica la distancia entre las ciudades i, j (si el contenido es 1, indica que
no existe camino entre esas dos ciudades). El array es de cadenas de caracteres y contiene los
nombres de las ciudades. El subalgoritmo debe devolver los pares de ciudades entre los que la
distancia es menor que la distancia dada como entrada.
b) Un algoritmo que lea un nmero indeterminado de nombres de ciudades, las distancias entre
ellas y una distancia tope. Debe mostrar en pantalla los pares de ciudades cuyas distancias son
menores que el tope, para ello debe utilizar el subalgoritmo del apartado anterior.
95) Disear un algoritmo que lea las longitudes de los tres lados de un tringulo (L1,L2,L3) y determine
qu tipo de tringulo es, de acuerdo a los siguientes casos. Suponiendo que A detona el mayor de los
tres lados y B y C corresponden con los otros dos, entonces:
Si A>=B + C No se trata de un tringulo
Si A
2
= B
2
+ C
2
Es un tringulo rectngulo
Si A
2
> B
2
+ C
2
Es un tringulo obtusngulo
Si A
2
< B
2
+ C
2
Es un tringulo acutngulo
96) Indica si el siguiente ciclo termina de ejecutarse o no. En caso afirmativo cando sera y qu valores
tendran h, a y termina al finalizar.
suma 0; a 0; h 1
termina FALSO
REPETIR
MIENTRAS h<20 HACER
ESCRIBIR Introduce el elemento, h
LEER a
SI a>100
ENTONCES
termina VERDAD
h 20
SI NO
suma suma + a
FIN_SI
FIN_MIENTRAS
HASTA QUE termina
23
Fundamentos de Informtica. Relacin de Problemas
97) Realizar los siguientes subalgoritmos y algoritmo:
a) Disear un subalgoritmo que sea capaz de calcular el valor mximo de un array. El array es de
reales.
b) Disear un subalgoritmo que sea capaz de calcular el valor mnimo de forma anloga al anterior.
c) Disear un subalgoritmo que calcule la media ponderada de un array de reales. Los pesos deben
de estar almacenados tambin en un array.
d) Disear un algoritmo que lea una serie de notas y sus respectivos pesos. Una vez realizado esto
debe ser capaz de poder realizar una de las siguientes acciones:
i) Calcular la media ponderada.
ii) Calcular la nota ms baja.
iii) Calcular la nota ms alta.
Deben utilizarse los subalgoritmos de los apartados anteriores.
98) Dadas las siguientes declaraciones de variables:
a: ARRAY[0..9] DE ENTEROS; x, i, k: ENTERO
donde el ARRAY a se inicializa con los valores: 6, 3, 9, 7, 1, 8, 10, 2, 4 y 5, encuentra el valor de x
cuando se ejecutan los siguientes segmentos de cdigo, comenta qu operacin realizan.
a) x 0
PARA i = 0 HASTA 9 CON INCREMENTO DE 1
x x + a(i)
FIN_PARA
b) x a(0)
PARA i = 1 HASTA 9 CON INCREMENTO DE 1
SI x < a(i)
ENTONCES
x a(i)
FIN_SI
FIN_PARA
c) k 0
PARA i = 1 HASTA 9 CON INCREMENTO DE 1
SI a(k) < a(i)
ENTONCES k i
FIN_SI
FIN_PARA
24
Fundamentos de Informtica. Relacin de Problemas
99) La gente que trata con fechas histricas utiliza un nombre llamado Da Juliano para calcular el
nmero de das entre dos sucesos. El Da Juliano es el nmero de das que han pasado desde el 1 de
enero del ao 413 a. C. Por ejemplo, el Da Juliano para el 16 de Octubre de 1956 es 2435763.
Existen frmulas para calcular el Da Juliano dada una fecha y viceversa. Una frmula muy sencilla
que calcula el da de la semana de un Da Juliano dado es:
Da de la semana = (Da Juliano +1) MOD 7
Esta frmula dar un resultado de 0 para el domingo, 1 para el lunes, y as sucesivamente hasta 6 para
sbado. Para el Da Juliano 2435763, el resultado de esta frmula debe ser un 2 (un martes). Escribir
un algoritmo que dado un Da Juliano, calcule el da de la semana que corresponde a dicho nmero.
100) Dado un vector A de n nmeros reales, obtener la diferencia ms grande entre dos elementos
consecutivos de ese vector.
101) Dado un vector A de n nmeros reales, obtener la diferencia ms grande y la menor diferencia entre
dos elementos consecutivos de ese vector.
102) Decir qu hace el siguiente algoritmo. Justifica la respuesta.
ALGORITMO X
VARIABLES: a, b, c, d: ENTERO
INICIO
LEER a
LEER b
c 0
d 0
MIENTRAS a > 0 HACER
c c + a * b
d d + b
LEER a
LEER b
FIN_MIENTRAS
ESCRIBIR c/d
FIN
103) Disear un algoritmo que lea un vector desordenado A, compuesto de n enteros e imprimir este
vector en la misma secuencia, pero ignorando los valores duplicados que se encuentren en l.
Tambin se necesita saber el nmero de elementos que permanecen en l (m); por ejemplo, dado el
vector siguiente
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
15 31 23 15 75 23 41 15 31 85
compuesto de 10 enteros, el vector comprimido que resulta estar formado por
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
15 31 23 75 41 85
25
Fundamentos de Informtica. Relacin de Problemas
con m = 6.
104) Dado un polinomio p(x) de la forma
p(x) = a0x
n
+a1x
n-1
+...+an-1x+an
donde a0, a1, ..., an son los nmeros reales que indican los coeficientes del polinomio. Construir
un algoritmo que lea el grado n, seguido de los coeficientes y una secuencia de valores de x. Para
cada uno de estos valores de x, debe calcularse el valor de p(x).
105) Disear un algoritmo que dada una matriz nos diga si es o no simtrica. Para ello debe utilizar un
subalgoritmo. Ejemplo de matriz simtrica:
106) La siguiente frmula proporciona la varianza de los valores de un vector x ( denota la media de
los n valores del vector):
Disear un algoritmo para leer los elementos de un vector x y calcular la media y la varianza de los
valores usando la frmula dada anteriormente.
107) Dada una matriz A de la forma:
La transpuesta de A, A es:
Realizar un subalgoritmo al que se le de una matriz de orden nxm y devuelva su transpuesta.
26
1
]
1

n
i
i x x
n
1
2
2
) (
1
1

,
_

nm n n
m
m
a a a
a a a
a a a
...
... ... ... ...
... ... ... ...
...
...
2 1
2 22 21
1 12 11

,
_

nm m m
n
n
a a a
a a a
a a a
...
... ... ... ...
... ... ... ...
...
...
2 1
2 22 12
1 21 11

,
_

3 9 7
9 2 4
7 4 1
Fundamentos de Informtica. Relacin de Problemas
108) Disear un algoritmo que calcule el tringulo de Pascal de coeficientes binomiales. Este tringulo
tiene la forma:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
... ... ... ... ... ...
donde, en general, cada elemento de un rengln se calcula realizando la suma de los dos
elementos situados en el rengln de ms arriba en una posicin a la izquierda y a la derecha.
Generar los 10 primeros renglones de este tringulo.
109) Disear un procedimiento al que se le de cmo entrada dos nmeros y devuelva el resto de la
divisin del primer argumento entre el segundo.
27

You might also like