Usted debe construir un arbol binario emplantillado que pueda ser Iterado con un Iterador bidireccional (Ver nota al final (*)). El árbol binario debe estar emplantillado con tres tipos <a,b,c>, donde a es la llave de acceso al árbol, b es el tipo de objeto que almacena y c el criterio de orden (En particular, van a trabajar con less<T> o greater <T>). Este criterio de orden debe aceptar los de la STL (Pag 944).
Por otro lado, debe manejar un archivo de acceso aleatorio para manejar el registro de información de un estudiante: identificador para el acceso aleatorio, carné (char de 6), nombre(char de 20), edad(int), promedio (double).
El programa se ejecutará siempre en este orden:
1.Al iniciar el programa, se despliegan los registros ocupados del archivo de acceso aleatorio y, luego, un menú según el dato que establece el orden en que los datos de los estudiantes deben cargarse:
1. Carné
2. Nombre
3. Edad
4. Promedio
Los datos se deben cargar en el árbol que ud construyó para ser ordenados. Observe que según la selección del usuario, el árbol que se construye varía en el tipo de llave.
2. Posteriormente el usuario decide si desea ordenar de mayor a menor o menor a mayor, lo cual define el criterio de orden (Para mantenerlo simple, sólo se va a trabajar con less<T> o greater <T>)
1. Ascendente
2. Descendente
3. Del dato que se escogió para el orden(carné, nombre, promedio o edad), depende la entrada del usuario. Por ejemplo, si especificó edad, entonces, deberá introducir un entero.
Esto provoca que se cree un Iterador que se coloque en el nodo buscado o en el más cercano anterior del valor buscado, en caso de no existir. Además debe desplegar esa entrada.
4. En este momento el usuario puede desplazarse hacia delante o hacia atrás del registro. Es decir, si introduce una 'a' ira al registro anterior y si introduce una 's' al siguiente.
5. Una vez que el usuario encuentre el registro deseado puede hacer una de dos cosas: eliminarlo con la letra 'e', modificarlo con la letra 'm' o insertar uno nuevo con la letra 'i'. Cualquiera de estas operaciones debe reflejarse correctamente en el árbol y en el archivo de acceso aleatorio. Las operaciones en el árbol deben realizarse siempre a través del iterador.
El archivo debe imprimirse después de cada operación para facilitar la labor del asistente.
6. El programa puede ser finalizado en cualquier momento con 'q'
NOTA SOBRE EL ITERADOR BIDIRECCIONAL: Pueden implementarlo de forma tal que nunca sobrepasa la última posición válida. Es decir, que nunca llegue a la posición después de la última. Con esto se evitan el problema de los punteros anterior y siguiente.
Forma de entrega
1. El trabajo debe ser realizado en tríos.
2. Debe subir su código a la plataforma educativa.
3. Debe entender el código porque habrá un quiz después de la entrega.
4. Deben presentar las siguientes secciones de la documentación:
Fecha de entrega:
1 de Diciembre