
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: Metodología de Programación, Profesor: , Carrera: I.T.I. Sistemas, Universidad: UMA
Tipo: Apuntes
1 / 1
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!

Metodología de la Programación.
Primera Relación de Problemas
DPTO. DE LENGUAJES Y C. DE LA COMPUTACION
E.T.S. DE INGENIERIA INFORMATICA
INGENIERIA INFORMATICA
Dadas las siguientes definiciones de tipos:
Nodo =
valor:
sig
: TipoLista
TipoLista
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:
h)
Dada la siguiente cabecera:
Func
Busca
↓p:TipoLista;
e:
TipoLista
devuelva el puntero al nodo que contiene a “e” si existe, y
en caso contrario.
i)^
Dada la siguiente cabecera:
Proc
InsBusca(
p:TipoPuntero;
e:
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:
5
se puede representar como:
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:
e:
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:
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):
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:
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 =
elem:
sig:Conjunto FINREGISTRO
Conjunto =
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.