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 1, Apuntes de Informática

Asignatura: Metodología 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 / 1

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Metodología de la Programación. Primera Relación de Problemas 1
UNIVERSIDAD DE MALAGA
DPTO. DE LENGUAJES Y C. DE LA COMPUTACION
E.T.S. DE INGENIERIA INFORMATICA
INGENIERIA INFORMATICA
METODOLOGÍA DE LA PROGRAMACIÓN
(CURSO 2004-2005)
PRIMERA RELACION DE PROBLEMAS
(23-2-2005)
1.- Dadas las siguientes definiciones de tipos:
Nodo = REGISTRO
valor: N
sig : TipoLista
FINREGISTRO
TipoLista = PUNTERO A Nodo
escriba procedimientos o funciones para:
a) Borrar todos los nodos de una lista enlazada y liberar la memoria.
b) Duplicar una lista enlazada.
c) Borrar el nodo que contiene el máximo valor de una lista enlazada.
d) Intercambiar el valor n-ésimo con el m-ésimo de la lista.
e) Concatenar dos listas enlazadas (se debe crear una nueva).
f) Borrar el n-ésimo elemento de la lista (n parámetro).
g) Eliminar todos los nodos de una lista cuyo valor sea “e” (segundo parámetro).
Proc Eliminar(↓↑ p:TipoLista; e:N)
h) Dada la siguiente cabecera:
Func Busca (p:TipoLista; e:N): TipoLista
devuelva el puntero al nodo que contiene a “e” si existe, y NULO en caso contrario.
i) Dada la siguiente cabecera:
Proc InsBusca(↓↑ p:TipoPuntero; e:N; pe:TipoLista)
añada “e” a la lista “p”, si no está en ella, y siempre devuelve en “pe” un puntero al nodo que contiene a “e”
2.- Si L es una variable del TipoLista definido en el ejercicio anterior:
Diseñe un procedimiento Purga que elimine los elementos duplicados de la lista enlazada con punteros L. El
procedimiento sólo tiene un parámetro: la lista L.
3.- Dadas dos listas enl azadas ordenadas de números naturales, L1 y L2 (de TipoLista) escribe un procedimiento o una
función que mezcle las dos listas (pasadas como parámetros) en otra lista de forma que esta última esté también
ordenada. L1 y/o L2 pueden estar vacías. No se pueden modificar las listas L1 y L2.
4.- Hay muchas aplicaciones en las que se debe almacenar en la memoria un vector de grandes dimensiones. Si la
mayoría de los elementos del vector son ceros, éste puede representarse más eficientemente utilizando una lista
enlazada con punteros, en la que cada nodo es un registro con tres campos: el valor de la coordenada, si es distinta
de cero, la coordenada y un puntero al siguiente nodo. Por ejemplo:
vector
25 1 -14 5
Indica que hay sólo dos elementos distintos de cero en el vector, es decir, éste es:
(25,0,0,0,-14,0,0)
si consideramos los vectores con siete coordenadas.
Metodología de la Programación. Primera Relación de Problemas 2
Escriba un programa que lea dos vectores por teclado, los introduzca en listas enlazadas y calcule su producto
escalar.
Para leer un vector primero se pedirá la dimensión y posteriormente se leerán todas las coordenadas.
5.- Un polinomio en X de un grado arbitrario se puede representar mediante una lista enlazada con punteros, donde
cada nodo contiene el coeficiente y el exponente de un término del polinomio, más un puntero al siguiente nodo.
Por ejemplo el polinomio:
25 X -14 X5
se puede representar como:
25 1 -14 5
polinomio
a) Escriba un procedimiento que reciba un polinomio P, un coeficiente c y un exponente e, y haga que el término de
grado e del polinomio P tenga el valor c. Si c es cero el término de grado e desaparecerá, si es que estaba. La
cabecera será:
Proc Poner(↓↑ P:TipoPolinomio; c:Z; e:N)
b) Escriba una función que devuelva el coeficiente del término de grado e de un polinomio P. La cabecera será:
Func Obtener(P:TipoPolinomio; e:N):Z
c) Escriba una función que reciba un polinomio P y devuelva el mayor grado de dicho polinomio. La cabecera será:
Func MaxGrado(P:TipoPolinomio):N
d) Escriba una función que evalúe un polinomio P en un X = valor. La función tendrá la cabecera:
Func Evaluar(P:TipoPolinomio; valor:Z):Z
e) Escriba una función que devuelva el polinomio resultado de sumar P1 y P2, con la cabecera siguiente:
Func Sumar(P1,P2:TipoPolinomio):TipoPolinomio
f) Escriba una función que devuelva el polinomio resultado de realizar la derivada de P, con la siguiente cabecera:
Func Derivada(P:TipoPolinomio):TipoPolinomio
6.- Suponga que tiene diseñado el tipo Conjunto (colección no ordenada de elementos distintos) mediante una lista
enlazada dinámica, de la siguiente forma:
Elemento = REGISTRO
elem:Z
sig:Conjunto
FINREGISTRO
Conjunto = PUNTERO A Elemento
Diseña dos subprogramas para realizar las operaciones de unión e intersección de dos conjuntos.
7.- Diseñe un procedimiento que ordene una list a enlazada.
Proc Ordenar(↓↑ L:TipoLista)
8.- Diseñe un algoritmo que lea de teclado un número natural M. A continuación, este algoritmo leerá desde teclado
una sucesión indefinida de números naturales distintos, acabada en 0 (puede suponerse que los números son
distintos), y calcule la media de los M mayores números de la sucesión. El número de elementos de la sucesión
puede ser menor que M, en cuyo caso calculará la media de los números introducidos.
9.- Modifique el algoritmo “gestion_agenda_hash” estudiado en el tema I para que el tratamiento de colisiones se l leve
a cabo mediante el método de cubos implementados con listas enlazadas.

Vista previa parcial del texto

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

Metodología de la Programación.

Primera Relación de Problemas

UNIVERSIDAD DE MALAGA

DPTO. DE LENGUAJES Y C. DE LA COMPUTACION

E.T.S. DE INGENIERIA INFORMATICA

INGENIERIA INFORMATICA

METODOLOGÍA DE LA PROGRAMACIÓN

(CURSO 2004-2005)

PRIMERA RELACION DE PROBLEMAS

Dadas las siguientes definiciones de tipos:

Nodo =

REGISTRO

valor:

N

sig

: TipoLista

FINREGISTRO

TipoLista

PUNTERO

A

Nodo

escriba procedimientos o funciones para:

a)^

Borrar todos los nodos de una lista enlazada y liberar la memoria. b)

Duplicar una lista enlazada. c)^

Borrar el nodo que contiene el máximo valor de una lista enlazada. d)

Intercambiar el valor n-ésimo con el m-ésimo de la lista. e)^

Concatenar dos listas enlazadas (se debe crear una nueva). f)^

Borrar el n-ésimo elemento de la lista (n parámetro). g)

Eliminar todos los nodos de una lista cuyo valor sea “e” (segundo parámetro).

Proc

Eliminar(

p:TipoLista;

e:

N )

h)

Dada la siguiente cabecera:

Func

Busca

↓p:TipoLista;

e:

N ):

TipoLista

devuelva el puntero al nodo que contiene a “e” si existe, y

NULO

en caso contrario.

i)^

Dada la siguiente cabecera:

Proc

InsBusca(

p:TipoPuntero;

e:

N ;

pe:TipoLista)

añada “e” a la lista “p”, si no está en ella, y siempre devuelve en “pe” un puntero al nodo que contiene a “e”

Si L es una variable del TipoLista definido en el ejercicio anterior:Diseñe un procedimiento

Purga

que elimine los elementos duplicados de la lista enlazada con punteros L. El

procedimiento sólo tiene un parámetro: la lista L. 3.-

Dadas dos listas enlazadas ordenadas de números naturales, L1 y L2 (de TipoLista) escribe un procedimiento o unafunción que mezcle las dos listas (pasadas como parámetros) en otra lista de forma que esta última esté tambiénordenada. L1 y/o L2 pueden estar vacías. No se pueden modificar las listas L1 y L2. 4.-

Hay muchas aplicaciones en las que se debe almacenar en la memoria un vector de grandes dimensiones. Si lamayoría de los elementos del vector son ceros, éste puede representarse más eficientemente utilizando una listaenlazada con punteros, en la que cada nodo es un registro con tres campos: el valor de la coordenada, si es distintade cero, la coordenada y un puntero al siguiente nodo. Por ejemplo:

vector

25

1

5

Indica que hay sólo dos elementos distintos de cero en el vector, es decir, éste es:

si consideramos los vectores con siete coordenadas.

Metodología de la Programación.

Primera Relación de Problemas

Escriba un programa que lea dos vectores por teclado, los introduzca en listas enlazadas y calcule su productoescalar.Para leer un vector primero se pedirá la dimensión y posteriormente se leerán todas las coordenadas. 5.-

Un polinomio en X de un grado arbitrario se puede representar mediante una lista enlazada con punteros, dondecada nodo contiene el coeficiente y el exponente de un término del polinomio, más un puntero al siguiente nodo.Por ejemplo el polinomio:

25 X -14 X

5

se puede representar como:

polinomio

a) Escriba un procedimiento que reciba un polinomio P, un coeficiente c y un exponente e, y haga que el término degrado e del polinomio P tenga el valor c. Si c es cero el término de grado e desaparecerá, si es que estaba. Lacabecera será:

Proc

Poner(

P:TipoPolinomio;

c:

Z ;

e:

N )

b) Escriba una función que devuelva el coeficiente del término de grado e de un polinomio P. La cabecera será:

Func

Obtener(

↓P:TipoPolinomio;

e:

N ):

Z

c) Escriba una función que reciba un polinomio P y devuelva el mayor grado de dicho polinomio. La cabecera será:

Func

MaxGrado(

↓P:TipoPolinomio):

N

d) Escriba una función que evalúe un polinomio P en un X = valor. La función tendrá la cabecera:

Func

Evaluar(

↓P:TipoPolinomio;

valor:

Z ):

Z

e) Escriba una función que devuelva el polinomio resultado de sumar P1 y P2, con la cabecera siguiente:

Func

Sumar(

↓P1,P2:TipoPolinomio):TipoPolinomio

f) Escriba una función que devuelva el polinomio resultado de realizar la

derivada

de P, con la siguiente cabecera:

Func

Derivada(

↓P:TipoPolinomio):TipoPolinomio

Suponga que tiene diseñado el tipo Conjunto (colección no ordenada de elementos distintos) mediante una listaenlazada dinámica, de la siguiente forma:

Elemento =

REGISTRO

elem:

Z

sig:Conjunto FINREGISTRO

Conjunto =

PUNTERO

A

Elemento

Diseña dos subprogramas para realizar las operaciones de unión e intersección de dos conjuntos. 7.-

Diseñe un procedimiento que ordene una lista enlazada.

Proc

Ordenar(

L:TipoLista)

Diseñe un algoritmo que lea de teclado un número natural M. A continuación, este algoritmo leerá desde tecladouna sucesión indefinida de números naturales distintos, acabada en 0 (puede suponerse que los números sondistintos), y calcule la media de los M mayores números de la sucesión. El número de elementos de la sucesiónpuede ser menor que M, en cuyo caso calculará la media de los números introducidos. 9.-

Modifique el algoritmo “gestion_agenda_hash” estudiado en el tema I para que el tratamiento de colisiones se llevea cabo mediante el método de cubos implementados con listas enlazadas.