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


Fundamentos de Programación: Examen Práctico 2 - Ejercicio de Ordenación de Subsecuencias , Exámenes de Programación Informática

Documento que detalla el ejercicio de un examen práctico de la asignatura de ingeniería informática, donde se pide desarrollar un programa que genere números aleatorios, ordene subsecuencias de tamaño fija y calcule estadísticos sobre el tiempo de ordenación. El algoritmo a implementar es counting sort.

Tipo: Exámenes

2016/2017

Subido el 31/12/2016

veromusic1
veromusic1 🇪🇸

4.5

(62)

8 documentos

1 / 2

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
FUNDAMENTOS DE PROGRAMACIÓN
GRADO EN INGENIERÍA INFORMÁTICA - Grupo B
EXAMEN PRÁCTICO 2
(Enero 2017)
Crear una carpeta llamada EXAMEN2 en el escritorio y copiar en ella el fichero examen2.cpp que se
encuentra en la página web de la asignatura (carpeta: Material de la Asignatura | Exámenes|
Examen Práctico 2).
Abrir examen2.cpp y modificar los datos que aparecen en la cabecera.
Una vez hecho el ejercicio, sólo tendrá que copiar en decsai el fichero examen2.cpp.
.
Ejercicio
Escribir un programa que genere números aleatorios comprendidos entre MIN_VALOR yMAX_VALOR,
los guarde en una secuencia de NUM_DATOS enteros, realice varias ordenaciones de subsecuencias
(todas del mismo tamaño) y calcule algunos datos estadísticos acerca del tiempo empleado en las
ordenaciones.
Se implementará el algoritmo counting sort sobre la clase SecuenciaEnteros.
Se emplearán la clases Cronometro yGeneradorAleatorioEnteros, que encontrará implemen-
tadas en la carpeta Examen Práctico 2.
Tareas a realizar en la función main():
1. En primer lugar, el programa generará NUM_DATOS enteros, guardándolos en una secuencia.
2. A continuación pedirá el número de subsecuencias num_veces que se van a ordenar y el
tamaño de éstas, tam_secuencia (todas serán iguales).
3. Ordenar num_veces veces una subsecuencia de tamaño tam_secuencia.
Cada vez se hace sobre una secuencia diferente. Se guardará el tiempo empleado en cada
ordenación
¿Cómo se procesa cada subsecuencia?
a) Generar un número aleatorio pentre 0 y NUM_DATOS-tam_secuencia.
b) Copiar a una secuencia de tamaño tam_secuencia los valores que están entre las po-
siciones pyp+tam_secuencia1.
c) Ordenarla con el algoritmo counting sort. Tomar nota del tiempo que se tarda en la
ordenación (guardarlo en una secuencia).
4. Finalmente, calcular y mostrar el tiempo mínimo, máximo, medio y la desviación típica de los
num_veces tiempos de ordenación registrados.
pf2

Vista previa parcial del texto

¡Descarga Fundamentos de Programación: Examen Práctico 2 - Ejercicio de Ordenación de Subsecuencias y más Exámenes en PDF de Programación Informática solo en Docsity!

FUNDAMENTOS DE PROGRAMACIÓN

GRADO EN INGENIERÍA INFORMÁTICA - Grupo B

EXAMEN PRÁCTICO 2

(Enero 2017)

Crear una carpeta llamada EXAMEN2 en el escritorio y copiar en ella el fichero examen2.cpp que se

encuentra en la página web de la asignatura (carpeta: Material de la Asignatura | Exámenes|

Examen Práctico 2).

Abrir examen2.cpp y modificar los datos que aparecen en la cabecera.

Una vez hecho el ejercicio, sólo tendrá que copiar en decsai el fichero examen2.cpp.

Ejercicio

Escribir un programa que genere números aleatorios comprendidos entre MIN_VALOR y MAX_VALOR,

los guarde en una secuencia de NUM_DATOS enteros, realice varias ordenaciones de subsecuencias

(todas del mismo tamaño) y calcule algunos datos estadísticos acerca del tiempo empleado en las ordenaciones.

⇒ Se implementará el algoritmo counting sort sobre la clase SecuenciaEnteros.

⇒ Se emplearán la clases Cronometro y GeneradorAleatorioEnteros, que encontrará implemen-

tadas en la carpeta Examen Práctico 2.

Tareas a realizar en la función main():

1. En primer lugar, el programa generará NUM_DATOS enteros, guardándolos en una secuencia.

2. A continuación pedirá el número de subsecuencias num_veces que se van a ordenar y el

tamaño de éstas, tam_secuencia (todas serán iguales).

3. Ordenar num_veces veces una subsecuencia de tamaño tam_secuencia.

Cada vez se hace sobre una secuencia diferente. Se guardará el tiempo empleado en cada ordenación ¿Cómo se procesa cada subsecuencia?

a) Generar un número aleatorio p entre 0 y NUM_DATOS-tam_secuencia.

b) Copiar a una secuencia de tamaño tam_secuencia los valores que están entre las po-

siciones p y p+tam_secuencia− 1.

c) Ordenarla con el algoritmo counting sort. Tomar nota del tiempo que se tarda en la ordenación (guardarlo en una secuencia).

  1. Finalmente, calcular y mostrar el tiempo mínimo, máximo, medio y la desviación típica de los

num_veces tiempos de ordenación registrados.

Counting Sort

El algoritmo Counting Sort es un método sencillo de ordenación que emplea un vector auxiliar para realizar la ordenación.

Añadir el método CountingSort() a la clase SecuenciaEnteros. El método propuesto ordena

la secuencia completa, modificando su contenido. Su cabecerá será:

void CountingSort ()

Descripción del algoritmo:

  1. Calcular los valores mínimo y máximo del vector. Por ejemplo, si trabajamos con una secuencia de caracteres que contiene los valores:

c b b a b c c a g c b g c

el mínimo es ’a’ y el máximo ’g’.

  1. Construir un vector local para contabilizar las frecuencias de todos los caracteres que hay entre el mínimo y el máximo. Con el ejemplo anterior, el vector de frecuencias contendrá 7 elementos, tantos como carac-

teres hay entre la ’a’ y la ’g’ (incluidos):

frecuencias --> 2 4 5 0 0 0 2

que corresponden a las frecuencias de las letras que hay entre ’a’ y ’g’: la letra ’a’ aparece

2 veces, la ’b’ aparece 4 veces, etc.

  1. Recorrer el vector de frecuencias, copiando en la solución cada carácter tantas veces como indique su frecuencia.

En el ejemplo, 2 veces la ’a’, cuatro veces la ’b’, etc.

a a b b b b c c c c c g g