You are on page 1of 8

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA

Facultad de Ingeniería
Escuela de Ciencias y Sistemas

Estructura de Datos B

Ing. Carlos Alonzo

Aux. Josué David Itzep Salvador

PRACTICA 1
Estructuras de Datos Básicas & Hoja de Calculo

DESCRIPCION GENERAL
Se requiere que el estudiante desarrolle una aplicación de consola utilizando el lenguaje de
programación C/C++, en la cual se realizara la manipulación de distintas estructuras de datos,
así como sus representaciones mediante imágenes generadas por el mismo estudiante, y se
realizara la creación de una sencilla hoja de cálculo, en la cual se podrán ejecutar acciones
sobre las distintas posiciones de la hoja.
MENU PRINCIPAL

El menú principal desplegara una interfaz ordenada y amigable, donde se pueda visualizar la
sección del curso y el carnet del estudiante, así como las siguientes opciones en la cual se
podrá elegir las configuraciones de los distintos subsistemas

Imagen 1. Menú principal

ESTRUCTURAS DE DATOS

Esta opción permitirá desplegar un nuevo menú en el cual se mostraran las siguientes
estructuras como opciones:

 Pila
 Cola
 Lista Doblemente Enlazada (Ordenada)
 Lista Circular Simplemente Enlazada (Ordenada)

Imagen 2. Menú “Estructuras de Datos”


Para c/una de las estructuras listadas anteriormente, se deberá realizar cada una de las
siguientes operaciones:

 Insertar
 Ver
 Editar
 Eliminar
 Graficar

Imagen 3. Menú de operaciones para “Pila”

NODO
Cada estructura mencionada en esta sección poseerá además de sus respectivos apuntadores
la siguiente información:

1. Id: número 0-100


2. Valor: un único carácter [ a-z | A-Z]

INSERTAR
Esta opción requerirá dos entradas por parte del usuario, las cuales serán un id, y un valor
respectivamente, los cuales servirán para la creación de un nuevo nodo que será insertado en
la estructura seleccionada previamente.

Lista Doblemente enlazada & Lista Circular Simplemente enlazada:


Estas listas son ordenadas, por lo que se utilizara el id de cada nodo en orden ascendente
para la inserción en estas estructuras, si se repite un id, se añadirá inmediatamente
después del id con el que repite, y se tomara como el inicio de la lista el nodo que tenga
el id menor de toda la lista
VER
Esta opción solicitara al usuario un único id, por medio del cual realizara una búsqueda dentro
de la estructura y mostrara la siguiente información:

 Id
 Valor
 Direcciones de memoria de los apuntadores que posea el nodo, así como el id
correspondiente a esos apuntadores

Imagen 4. Ver ID:5 de lista doblemente enlazada

* Si el id no se encuentra dentro de la estructura deberá de lanzar un mensaje de advertencia,


si existe más de un nodo con el mismo id se mostrara la información de todos

EDITAR
Esta opción solicitara al usuario un único id, por medio del cual realizara una búsqueda dentro
de la estructura y devolverá el nodo solicitado, en el cual se podrá editar únicamente el valor
del nodo, NO el id

* Si el id no se encuentra dentro de la estructura deberá de lanzar un mensaje de advertencia,


si existe más de un nodo con el mismo id se devolverá el primero de la lista

ELIMINAR
Esta opción solicitara al usuario un único id, por medio del cual realizara una búsqueda dentro
de la estructura y eliminara el nodo de su respectiva estructura

* Si el id no se encuentra dentro de la estructura deberá de lanzar un mensaje de advertencia,


si existe más de un nodo con el mismo id se eliminara el primero en la lista
GRAFICAR
Esta opción permitirá visualizar la estructura seleccionada a través de las herramientas del
sistema operativo, dicha grafica será generada mediante la herramienta ‘Graphviz’, y será
mostrada de manera independiente a la aplicación creada por el estudiante.

La grafica deberá de mostrar de una manera ordenada y adecuada la información en cada uno
de sus nodos, así como sus relaciones, y se debe de hacer una clara distinción de los nodos
cabecera o iniciales y los nodos finales, topes, fondos, etc.

Imagen 5. Lista Doblemente Enlazada

Imagen 6. Pila tope = 5, fondo=9 && cola frente= 9, cola =5


HOJA DE CÁLCULO

Se realizara una hoja de cálculo de tamaño variable X x Y, donde:

 X = Numero de columnas
 Y = Numero de Filas

* Los índices empezaran de 0 hasta (X-1) y de 0 hasta (Y-1)

La cual constara de listas simplemente enlazadas vacías al inicio, las cuales simularan una
matriz; cada una de estas listas consistirá en una lista para filas y otra para columnas, donde
los tamaños X y Y serán parámetros ingresados por el usuario y serán enteros positivos, en
esta se mostrara un menú con las siguientes opciones:

Imagen 7. Menú “Hoja de Cálculo”

Cada nodo de esta matriz poseerá como atributo:

 Valor: Entero > 0

CREAR HOJA
Si se elige esta opción y existe previamente una hoja existente esta se deberá eliminar y crear
una nueva

INSERTAR VALOR
Esta opción nos permitirá agregar un valor adentro de una casilla dentro de la hoja de cálculo,
para lo cual se solicitara al usuario:

 Columna: es la posición de la columna donde se ingresara el valor


 Fila: es la posición de la fila donde se ingresara el valor
 Valor: Valor a insertar en la casilla con coordenadas(x,y)

GRAFICAR
Esta opción permitirá visualizar la hoja de cálculo a través de las
herramientas del sistema operativo, dicha grafica será generada
mediante la herramienta ‘Graphviz’, y será mostrada de manera
independiente a la aplicación creada por el estudiante, y deberá de
mostrar los valores dentro de la matriz en el momento actual

Imagen 8. Matriz de X=2, Y=3


OPERACIONES
La hoja soportara las siguientes operaciones:

 Suma
 Resta
 Multiplicación

En las cuales se deberá de solicitar para cada operación los siguientes parámetros

 Columna Destino
 Fila Destino
 Columna valor 1
 Fila valor 1
 Columna valor 2
 Fila valor 2

Donde el resultado de la operación seleccionada anteriormente, será colocada en la posición:


(Columna Destino, Fila Destino), y el valor será el resultado de operar valor 1 y valor2

Imagen 9. Operación Multiplicación: en Columna Destino = B, Fila Destino=2

REPETIR & DESHACER


Se podrán repetir y deshacer las operaciones e inserciones realizadas dentro de la hoja de
cálculo, para lo cual se manejaran 2 pilas, las cuales almacenaran tanto la posición de la fila y
de la columna, como el valor en esa posición, cuando se realice una inserción u operación
sobre una posición de la hoja, esta será almacenada dentro de la pila de deshacer, y al
deshacer se almacenara dentro de la pila de repetir, tomar en cuenta que si se realiza una
operación o inserción en una casilla con valor previo este deberá de seguir en esa posición al
deshacer

NOTA:
Se debe poder visualizar las gráficas de ambos menús ‘Estructuras de Datos’ y ‘Hoja de Cálculo’
en cualquier momento, si no existen elementos en alguna posición de la estructura o no existe
la estructura debe de mostrarse algo significativo en la imagen para representar que no
existen elementos
OBSERVACIONES
 Lenguaje a utilizar: C/C++
 Está permitido el uso de cualquier framework o IDE de desarrollo (Recomendado:
QtCreator)
 Está permitido el uso de cualquier sistema operativo
 Queda terminantemente prohibido el uso de librerías para estructuras propias del
lenguaje, uso de arreglos, vectores, etc. de detectarse el uso de estas se anulara la
practica
 Las estructuras deben ser implementadas mediante el uso de struct y punteros
 NO se deben de utilizar clases, ya sea para crear las estructuras, ni para almacenar
punteros hacia ellas
 La aplicación será compilada y ejecutada en el momento de la calificación con el
compilador elegido por el estudiante
 Se debe de utilizar una herramienta para generar las imágenes que contendrán las
gráficas de las estructuras (Recomendado: Graphviz)
 Las imágenes mostradas en este enunciado son fines explicativos, el estudiante puede
diseñarlas a su criterio

PENALIZACIONES
 Si existe un “null pointer exception”, o “segmentation fault(core dumped)”, se
penalizara, a criterio del auxiliar
 Si la aplicación se cierra repentinamente existirá una penalización a criterio del auxiliar
 Si no se visualiza de manera correcta las gráficas de las estructuras, no se tendrá el
punteo completo asociadas a esta

FECHA Y MODO DE ENTREGA


 Martes 14 de Agosto de 2018 antes de las 23:59, NO se recibirán entregas tarde
 Se deben de enviar los entregables vía Dropbox, en un comprimido con el nombre:
[EDD]Practica1_#carnet (e.g. [EDD]Practica1_201318613)
 Dropbox: https://www.dropbox.com/request/sJheVjHV5Evgv8PIAUvx

REQUERIMIENTOS MINIMOS
 Subir los entregables vía Dropbox, de lo contrario NO se calificara.

*Copias totales, parciales, y/o de internet, tendrán nota de 0 puntos, y serán reportadas al
catedrático y a la Escuela de Ciencias y Sistemas FI-USAC