


Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Elementos de Programación, Profesor: , Carrera: I.T.I. Sistemas, Universidad: UMA
Tipo: Apuntes
1 / 4
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!



Elementos de Programación
Tercera Relación de Problemas
DPTO. DE LENGUAJES Y C. DE LA COMPUTACION
E.T.S. DE INGENIERIA INFORMATICA
INGENIERIA INFORMATICA
Dadas las siguientes declaraciones:
Tipos
Lista
Variables
a:
Lista x,i,k:
donde el array
a^
tiene 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 código: x^
i
x^
x + a[i]
x^
a[0] PARA
i
(x < a[i])
x^
a[i]
k^
i
(a[k] < a[i])
k^
i
FINPARA x^
a[k]
¿Qué salida produce la ejecución del siguiente algoritmo?^ Algoritmo
Dígitos
Tipos
Lista =
Variables
ch:
cont: Lista Inicio
ch
cont[ch]
FINPARA leer(ch) MIENTRAS
(ch
cont[ch]
cont[ch] + 1
leer(ch) FINMIENTRAS PARA
ch
escribir(ch)escribir(cont[ch])salto_linea FINPARA Fin
Elementos de Programación
Tercera Relación de Problemas
Para realizar operaciones con números complejos, podemos definir el siguiente tipo:
Complejo =
real,imaginaria:
Escribe algoritmos que realicen las operaciones de suma, resta, multiplicación y división de números complejosdefinidos con el tipo anterior.
4.^
Se dispone de un array de 80 números enteros en el que al menos hay dos números que son iguales y dos que sondistintos. Obtenga una función que tomando como parámetro dicho array, devuelva un elemento del array que seamayor que el mínimo de éste.
5.^
Diseña un algoritmo que permita introducir un mensaje codificado, precedido de la correspondiente clave, quevendrá dada por una sucesión de las 26 letras mayúsculas del alfabeto, y lo traduzca. Para decodificar el mensaje sehace corresponder la primera letra de la clave con ‘A’, la segunda con ‘B’, etc....Por ejemplo, una entrada de laforma:
Introduzca la clave: IXMRKLSTNUZB.........GFIntroduzca el texto: MILK.
debería dar como salida:
Los signos de puntuación y dígitos que aparezcan en el mensaje deben traducirse como tales.
6.^
Dados los siguientes tipos:
RangoMay = ['A'..'Z']Componentes =
RangoMay
Vector
datos
: Componentes
tam :
a) Diseña un procedimiento que tome como parámetros de entrada dos vectores ordenados de tipo Vector ydevuelva el Vector resultado de realizar la mezcla de ambos.b) Diseña una función booleana que dados dos Vectores, devuelva TRUE si son iguales y FALSE en otro caso. DosVectores son iguales si contienen los mismos elementos y en el mismo orden relativo, suponiendo que el primerelemento sigue al último. Por ejemplo, si la entrada fuera:
la función devolvería TRUE.Supón, además, que cada carácter aparece a lo sumo una vez.c) La moda de un array de caracteres es el carácter del array que se repite más frecuentemente. Si varios caracteresse repiten con la misma frecuencia máxima, entonces no hay moda. Escribe un procedimiento que reciba un Vectory devuelva la moda, o una indicación de que la moda no existe.
7.^
Escribe un programa que lea una sucesión de 10 números naturales, encuentre el valor máximo y lo imprima juntocon el número de veces que aparece, y las posiciones en que esto ocurre. El proceso se repite con el resto de lasucesión hasta que no quede ningún elemento por tratar.
Ejemplo de entrada:
Salida generada:
143 aparece 3 veces, en posiciones 3 6 9....7 aparece 2 veces, en posiciones 1 10
Elementos de Programación
Tercera Relación de Problemas
Un histograma es una gráfica que muestra la frecuencia con que aparecen en una lista dada los distintos valores quela pudieran formar. Por ejemplo, si los valores de una lista pueden estar comprendidos entre 0 y 9, y la lista estáformada por: 6,4,4,1,9,7,5,6,4,2,3,9,5,6,4, su histograma sería:
Esto indica que 0 y 8 no aparecen ninguna vez, que 1,2,3 y 7 aparecen una vez, 5 y 9 dos veces, etc. Escriba unalgoritmo que lea una lista de números comprendidos entre 0 y 9 (la lista acabará cuando se lea un número negativo,y a priori no se puede determinar cuantos números contiene) e imprima por pantalla un histograma como el anterior.
9.^
La distancia entre dos letras en un texto es el número de letras que aparecen en el texto entre las dos letrasindicadas. Diseñe un algoritmo que lea un texto de longitud indefinida y muestre por pantalla la máxima distanciaentre cada par de letras repetidas. Aquellas letras que no se repitan no aparecerán en la salida.
Por ejemplo:
Texto
Salida:
Distancia entre
Distancia entre
Distancia entre
Se tendrá en cuenta:
Que el texto acabará en un punto.El texto está formado solamente por letras mayúsculas.
n^
cartas, siendo
n^ un número triangular; esto es,
n=1+2+3+...+k
para algún
k^ ∈Ν
. Se reparte la totalidad de las cartas en un número
arbitrario de montones, cada uno de ellos con una cantidad arbitraria de cartas.El lote de montones se puede reorganizar así: se toma una carta de cada montón (con lo que desaparecerán losmontones con una sóla carta), y con todas ellas se forma uno nuevo, que se agrega al final de la lista de montones.Por ejemplo, la operación descrita transforma los montones de 1, 8, 1 y 5 cartas, en otros de 7, 4 y 4respectivamente:
El desarrollo del juego consiste en llevar a cabo la reorganización descrita cuantas veces sea necesario hasta quehaya un montón de 1 carta, otro de 2 cartas..., otro de k-1 cartas y, finalmente, otro de k cartas. Por ejemplo,partiendo de la situación [ 5 7 3 ], las reorganizaciones sucesivas evolucionan como sigue:
Realizar un algoritmo que lea de teclado el número de montones inicial y el número de cartas de cada montón. Elnúmero montones máximo no podrá ser mayor de 15. El algoritmo deberá mostrar por pantalla la secuencia demontones hasta finalizar el solitario.
x^
en un array
a^
ordenado de forma creciente,
de forma que dicho array continúe estando ordenado. El array tendrá un número de elementos válidos que podrá sermenor que el número total de elementos. Si en el momento de la inserción el número de elementos válidos coincidecon el número total de elementos del array, el elemento de mayor valor desaparecerá.
Elementos de Programación
Tercera Relación de Problemas
a
de
filas y
columnas es simétrico si sus elementos satisfacen la condición
a[i,j]
= a[j,i]
para todo i,j. Escribe una función que determine si un array de ese tipo es simétrico.
n^
n+
n^
Una propiedad interesante es que se pueden visitar todas sus casillas haciendo el siguiente recorrido pordiagonales. Empezamos por la casilla (1,1) y recorremos la diagonal principal hacia la derecha y hacia abajo hastallegar a la casilla (n,n). La siguiente casilla a visitar sería la (n+1,n+1) que no existe porque nos saldríamos deltablero por abajo. En estos casos siempre se pasa a la casilla equivalente en al primera fila, es decir, la (1,n+1).Ahora seguimos moviéndonos hacia la derecha y hacia abajo. Pero la siguiente casilla sería la (2,n+2) que noexiste porque nos hemos salido por la derecha. En estos casos se continúa por la casilla equivalente de la primeracolumna, es decir, la (2,1). De nuevo nos movemos hacia la derecha y hacia abajo, hasta alcanzar la casilla (n,n-1).La siguiente casilla sería la (n+1,n), pero como nos saldríamos por abajo pasamos a la casilla equivalente de laprimera fila (1,n). Si se continúa con este proceso se termina visitando todas las casillas del tablero.
Diseñe un procedimiento que dada una constante N devuelve como parámetro un tablero N-goro con sus casillas rellenas con el número correspondiente al momento en que se visitan. Por ejemplo, si N es 4, el tablero adevolver sería:
circular y por otras no. Un ejemplo se muestra en la figura siguiente, en donde las celdas no visitables se marcancon una X y las visitables se dejan en blanco.
Diseñe un algoritmo que, tomando como parámetros una
zona
de ese tipo, un valor
n
y una determinada
coordenada
(una celda visitable) determine la celda en la que nos encontraremos tras realizar
n^
movimientos por
la zona partiendo de la
coordenada
dada, teniendo en cuenta:
Elementos de Programación
Tercera Relación de Problemas
abxa b xabxahola y adios.-------------hpia z xdjls.-------------|||| | ||||||||| | ||||+--> s
= s
|||| | |||+---> o
|||| | ||+----> i
= j
|||| | |+-----> d
= d
|||| | +------> a
|||| +--------> y
= z
|||+----------> a
= a
||+-----------> l
|+------------> o
= p
+-------------> h
= h
soldados está rodeado por el enemigo y no hay posibilidad de victoria sin refuerzos, pero hay sólo
un caballo para escapar y pedir dichos refuerzos. Los soldados llegan a un acuerdo para determinar quien va aescapar y pedir ayuda. Forman un círculo y sacan un número
n
de un sombrero y uno de sus nombres de otro.
Empezando por el soldado cuyo nombre se ha sacado cuentan, en el sentido de las agujas del reloj,
n^
soldados y
sacan fuera del círculo al soldado encontrado en el lugar n-ésimo. La cuenta empieza de nuevo con el siguientesoldado (el que sigue al eliminado según el sentido de las agujas del reloj). El proceso continúa de forma que cadavez que la cuenta llega a
n^
se saca un soldado del círculo. Una vez que un soldado se saca del círculo ya no se
vuelve a contar. El soldado que queda al final es el que coge el caballo y escapa.Diseña un subalgoritmo con la siguiente cabecera que realiza el proceso anterior:
Func
escapa(
↓nom_soldados:Soldados;
↓
n:
↓
pr_sol:CADENA):
donde tipo es:
Soldados
y el significado de cada parámetro es el siguiente:
nom_soldadoses
un array de cadenas de caracteres con los nombres de los M soldados queforman el círculo y en el orden el que se encuentran en el mismo. Alsoldado que ocupa la posición M del array le sigue en el círculo (según lasagujas del reloj) el que se encuentra en la posición 1 del arrray.
n^
número n para realizar la cuenta según el proceso indicado.
pr_sol
nombre del soldado que se escoge del sombrero.
la función devuelve el índice en el array del soldado elegido para escapar.
area, pretende desarrollar un sistema informático que le ayude en su tarea.Para ello, nos pide que realicemos el siguiente subprograma
Superficie
Superf_lava =
Proc
flujo_de_lava(
↓^
sup: Superficie;
↓
fila, columna:
↑lava: Superf_lava)
El cual recibe un array bidimensional (Superficie) que representa el plano de la zona a estudiar, donde cadaelemento contiene un número natural que representa la altura de ese punto respecto al nivel del mar.Así mismo, recibe un punto (fila y columna) de dicho plano donde surge el cráter de un volcán.El subprograma predecirá el recorrido que realiza la lava, y la mostrará en el array bidimensional de salida(Superf_lava), donde el asterisco ('*') representa que la lava ha pasado por ese punto, y el espacio en blanco (' ')representa que la lava no ha pasado por dicho punto.
Elementos de Programación
Tercera Relación de Problemas
El flujo de lava se desplaza según el siguiente esquema a partir del cráter:
Desde un determinado punto, siempre se mueve hacia los puntos circundantes1 que se encuentran a menoraltura.
-^
En caso de no haber puntos circundantes a menor altura, se moverá a los puntos circundantes de igualaltura.
-^
Así sucesivamente se repite el proceso para todos los puntos donde haya alcanzado el flujo de lava.
Ejemplo: Cráter del Volcán: 3, 3
Superficie
Superf_lava
1
Los puntos circundantes de uno dado serán el superior, inferior, izquierdo y derecho (no se considerarán losdiagonales).La estructura no se considera circular.