Contexto: Para cada información de notas entregadas a los alumnos
a través del InterAyuda se desea incorporar infromación de
la posición porcentual de esa nota dentro del grupo. En otras palabara
, se desea entregar la información del porcentaje de notas inferiores
o iguales a cada nota. Por ejemplo, si en un grupo de 5 los resultados
fueron: 20, 40, 65 ,70 , y 92; la posición porcentual según
este criterio es:
20 20 %
40 40 %
65 60%
70 80%
92 100%
La idea es que, además de la nota, en el InterAyuda yo les pueda dar información de en qué posición están respecto del grupo. El que saca la mejor nota estará el el 100% respecto a su grupo y el que obtiene la mínima estará en la posición 100/n (donde n es el número de notas).
Tarea: Desarrollar un programa que, dada un listado de notas entregado en un archivo (una nota por línea), entregue un archivo de salida que contenga la nota y luego la posición porcentual de esa nota.
El nombre del archivo de entrada es ingresado como un argumento en la
línea de comando.
El nombre del archivo de salida es como el de entrada agregando a su
nombre la extensión ".out".
Es decir si su porgrama es llamado :
bash> tarea3 elo320.c1
los resultados quegan en el archivo elo320.c1.out
Aún cuando la tarea en el contexto de un curso de ~30 alumnos se puede desarrollar de cualquier forma y su tiempo de ejecución será reducido, debemos ponernos en el caso que su programa pueda ser usado para grupos muy grandes de datos. Por ello se pide que el algoritmo use:
1.- Un árbol de busqueda binaria aumentado con un campo "tamaño"
en cada nodo. Éste lamacena el número de nodos totales
del subárbol formado al tener ese nodo como raíz.
2.- Ustede deberá implementar, al menos, las operaciones de
inserción, búsqueda, y obtención de la
posición de orden.
El algortimo puede ser como:
a.- leer archivo de entrada e insertar el el árbol cada dato
leido. N=número de notas;
b.- Volver a abrir el archivo de entrada y abrir el archivo de salida
c.- Para (cada nota del archivo de entrada)
d.- Escribir la nota en el
archivo de salida;
e.- x = Buscar el nodo del
árbol con esa nota;
f.- Escribir en archivo
de salida Posición de orden(x) / N ;
g.- Escribir nueva línea;
h.- Cerrar los archivos de entrada y salida.