Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Relación 3, Apuntes de Informática

Asignatura: Elementos de Programación, Profesor: , Carrera: I.T.I. Sistemas, Universidad: UMA

Tipo: Apuntes

Antes del 2010

Subido el 25/10/2007

josemanuelk6
josemanuelk6 🇪🇸

4.2

(56)

58 documentos

1 / 4

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Elementos de Programación Tercera Relación de Problemas 1
UNIVERSIDAD DE MALAGA
DPTO. DE LENGUAJES Y C. DE LA COMPUTACION
E.T.S. DE INGENIERIA INFORMATICA
INGENIERIA INFORMATICA
ELEMENTOS DE PROGRAMACIÓN
(CURSO 2004-2005)
TERCERA RELACIÓN DE PROBLEMAS
(13-12-2004)
1. Dadas las siguientes declaraciones:
Tipos
Lista = ARRAY [0..9] DE N
Variables
a: Lista
x,i,k: N
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 0
PARA i 0 HASTA 9 HACER
x x + a[i]
FINPARA
x a[0]
PARA i 1 HASTA 9 HACER
SI (x < a[i]) ENTONCES
x a[i]
FINSI
FINPARA
k 0
PARA i 1 HASTA 9 HACER
SI (a[k] < a[i]) ENTONCES
k i
FINSI
FINPARA
x a[k]
2. ¿Qué salida produce la ejecución del siguiente algoritmo?
Algoritmo Dígitos
Tipos
Lista = ARRAY ['0'..'9'] DE N
Variables
ch: C
cont: Lista
Inicio
PARA ch '0' HASTA '9' HACER
cont[ch] 0
FINPARA
leer(ch)
MIENTRAS (ch '*') HACER
cont[ch] cont[ch] + 1
leer(ch)
FINMIENTRAS
PARA ch '0' HASTA '9' HACER
escribir(ch)
escribir(cont[ch])
salto_linea
FINPARA
Fin
Elementos de Programación Tercera Relación de Problemas 2
3. Para realizar operaciones con números complejos, podemos definir el siguiente tipo:
Complejo = REGISTRO
real,imaginaria: R
FINREGISTRO
Escribe algoritmos que realicen las operaciones de suma, resta, multiplicación y división de números complejos
definidos 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 son
distintos. Obtenga una función que tomando como parámetro dicho array, devuelva un elemento del array que sea
mayor que el mínimo de éste.
5. Diseña un algoritmo que permita introducir un mensaje codificado, precedido de la correspondiente clave, que
vendrá dada por una sucesión de las 26 letras mayúsculas del alfabeto, y lo traduzca. Para decodificar el mensaje se
hace corresponder la primera letra de la clave con ‘A’, la segunda con ‘B’, etc....Por ejemplo, una entrada de la
forma: Introduzca la clave: IXMRKLSTNUZB.........GF
Introduzca el texto: MILK.
debería dar como salida:
CAFE
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 = ARRAY [1..MAX] DE RangoMay
Vector = REGISTRO
datos : Componentes
tam : N
FINREGISTRO
a) Diseña un procedimiento que tome como parámetros de entrada dos vectores ordenados de tipo Vector y
devuelva 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. Dos
Vectores son iguales si contienen los mismos elementos y en el mismo orden relativo, suponiendo que el primer
elemento sigue al último. Por ejemplo, si la entrada fuera:
[‘A’,’C’,’D’,’F’,’E’]
[‘D’,’F’,’E’,’A’,’C’]
la función devolvería TRUE.
Supón, además, que cada carácter apar ece a lo sumo una vez.
c) La moda de un array de caractere s es el carácter del array que se repite más frecuentemente. Si varios caracteres
se repiten con la misma frecuencia máxima, entonc es no hay moda. Escribe un procedimiento que reciba un Vector
y 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 junto
con el número de veces que aparece, y las posiciones en que esto ocurre. El proceso se repite con el resto de la
sucesión hasta que no quede ningún elemento por tratar.
Ejemplo de entrada: 7 10 143 10 52 143 72 10 143 7
Salida generada: 143 aparece 3 veces, en posiciones 3 6 9.
...
7 apar ece 2 veces, en posiciones 1 10
pf3
pf4

Vista previa parcial del texto

¡Descarga Relación 3 y más Apuntes en PDF de Informática solo en Docsity!

Elementos de Programación

Tercera Relación de Problemas

UNIVERSIDAD DE MALAGA

DPTO. DE LENGUAJES Y C. DE LA COMPUTACION

E.T.S. DE INGENIERIA INFORMATICA

INGENIERIA INFORMATICA

ELEMENTOS DE PROGRAMACIÓN

(CURSO 2004-2005)

TERCERA RELACIÓN DE PROBLEMAS

1.^

Dadas las siguientes declaraciones:

Tipos

Lista

ARRAY

[0..9]

DE

N

Variables

a:

Lista x,i,k:

N

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^

PARA

i

HASTA

^9

HACER

x^

x + a[i]

FINPARA

x^

a[0] PARA

i

HASTA

^9

HACER

SI

(x < a[i])

ENTONCES

x^

a[i]

FINSI

FINPARA

k^

PARA

i

HASTA

^9

HACER

SI

(a[k] < a[i])

ENTONCES

k^

i

FINSI

FINPARA x^

a[k]

2.^

¿Qué salida produce la ejecución del siguiente algoritmo?^ Algoritmo

Dígitos

Tipos

Lista =

ARRAY

['0'..'9']

DE

N

Variables

ch:

C

cont: Lista Inicio

PARA

ch

HASTA

HACER

cont[ch]

FINPARA leer(ch) MIENTRAS

(ch

HACER

cont[ch]

cont[ch] + 1

leer(ch) FINMIENTRAS PARA

ch

HASTA

HACER

escribir(ch)escribir(cont[ch])salto_linea FINPARA Fin

Elementos de Programación

Tercera Relación de Problemas

3.^

Para realizar operaciones con números complejos, podemos definir el siguiente tipo:

Complejo =

REGISTRO

real,imaginaria:

R

FINREGISTRO

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:

CAFE

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 =

ARRAY

[1..MAX]

DE

RangoMay

Vector

REGISTRO

datos

: Componentes

tam :

N

FINREGISTRO

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:

[‘A’,’C’,’D’,’F’,’E’][‘D’,’F’,’E’,’A’,’C’]

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

8.^

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

:^ ABEADDGLAKE.

Salida:

Distancia entre

A: 4

Distancia entre

D: 0

Distancia entre

E: 7

Se tendrá en cuenta:

Que el texto acabará en un punto.El texto está formado solamente por letras mayúsculas.

  1. El juego de cartas llamado “El solitario vulgar” consiste en lo siguiente. Consideremos un mazo de

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:

[ 1 8 1 5 ]

[ 7 4 4 ]

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:

[ 5 7 3 ][ 4 6 2 3 ][ 3 5 1 2 4 ][ 2 4 1 3 5 ][ 1 3 2 4 5 ][ 2 1 3 4 5][1 2 3 4 5 ]

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.

  1. Escribe un procedimiento que pueda insertar el valor de una variable

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

  1. Escribe una función que encuentre el elemento más grande de un array de dos dimensiones dado.13. Un array bidimensional

a

de

M

filas y

M

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.

  1. Un tablero n-goro es un tablero con n x (n+1) casillas de la forma:

...^

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:

  1. Se dispone de una determinada zona cuadrangular dividida en celdas (8x8), por algunas de las cuales se puede

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.

X

X

X^

X^

X

X^

X^

X^

X^

X^

X

X

X^

X^

X

X

X

X^

X^

X^

X^

X

X

X

X^

X^

X^

X^

X

X

X

X

X^

X^

X^

X^

X

X

X

X^

X^

X^

X^

X

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:

  • Un movimiento consiste en un desplazamiento horizontal o vertical desde una celda a una vecina visitable,sin considerar la celda de la que se proviene.- Cada celda tiene 4 celdas vecinas posibles, teniendo en cuenta sólo vecindad horizontal y vertical (una celdaque está en un borde o bordes de la cuadrícula tiene como vecinas a las celdas del borde o bordes opuestos).

Elementos de Programación

Tercera Relación de Problemas

abxa b xabxahola y adios.-------------hpia z xdjls.-------------|||| | ||||||||| | ||||+--> s

= s

|||| | |||+---> o

  • 23 = l

|||| | ||+----> i

= j

|||| | |+-----> d

= d

|||| | +------> a

  • 23 = x

|||| +--------> y

= z

|||+----------> a

= a

||+-----------> l

  • 23 = i

|+------------> o

= p

+-------------> h

= h

  1. Un grupo de

M

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:

N ;

pr_sol:CADENA):

N

donde tipo es:

Soldados

ARRAY

[1..M]

DE

CADENA

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.

  1. Un importante vulcanólogo, con objeto de estudiar las consecuencias destructoras de un volcán en una determinada

area, pretende desarrollar un sistema informático que le ayude en su tarea.Para ello, nos pide que realicemos el siguiente subprograma

CONST

N_FILAS

N_COLUMNAS

TIPOS

Superficie

=^

ARRAY

[1..N_FILAS] ,

[1..N_COLUMNAS]

DE

N

Superf_lava =

ARRAY

[1..N_FILAS] ,

[1..N_COLUMNAS]

DE

C

Proc

flujo_de_lava(

↓^

sup: Superficie;

fila, columna:

N

↑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.