Estas instrucciones
archivo >> aux;
if (aux > 7)
puntos += 0.5;
else
puntos += aux;
Podrían ser una función, parecen repetirse varias veces en el código enviado.
Si nadie se tienta a hacerlo por ti, sugiero que crees una función que convierta lo anterior en
puntos += puntosAdicionales(archivo);