Tarea 3: Histograma de Frecuencia de Palabras

En esta tarea usted experimentará el uso de la  bibliotecas de plantillas estándar.

Problema
    Se le pide escribir un programa que lea un documento (archivo) de la entrada estándar y produzcas en la salida estándar un listado de todas las palabras aparecidas en el documento junto con un contador del número de ocurrencias de cada palabra. El listado debería estar en ordenado por número creciente de ocurrencias y orden alfabético dentro de una misma frecuencia de ocurrencia.
    Cada línea del listado de salida debe contener una única palabra (todas en minúsculas) seguidas por uno o más espacios en blanco y seguidas por un entero indicando el númerio de ocurrencias.
    Para efectos de esta tarea, una "palabra" es un string de caracteres alfabéticos limitados en ambos extremos por caracteres no alfabéticos, el comienzo o fin de línea y el comienzo o fin de archivo. Las diferencias en mayúscula o minusculas  no son consideradas relevantes. "hola", "HOLA", y "Hola" son todas tratadas como la misma palabra.

Implementación
    Usted debería producir una implementación usando C++ y la biblioteca estándar STL. Un "esqueleto" de la solución está disponible en histograma.cpp como punto de partida.
    Observe los comentarios en estilo /*  */ que indican las porciones del código que ustede debe incorporar para completar el algoritmo.
 
Alternativamente, usted puede desarrollar su solucion en Java. En este caso se deja a su disposicion histograma.java y WordCounts.java los cuales pueden ser usados como punto de partida.
Envio de la Tarea
   Crear un subdirectorio que lleva su nombre y con SOLO los archivos siguientes: Makefile, readme.txt, historgrama.cpp, documentacion (descripción el un formato visible en linux, con una descripción de alto nivel del algoritmo). El archivo comprimido (zip o tar) se envia a elo326@elo.utfsm.cl

Ejemplo
    Si su programa es aplicado este archivo histograma.cpp se obtendrá algo como esto .