/********************************************************************************************
histo1.cpp
    Jim Millard
    for CO211/Fall 1999

Program that tracks integer input and displays a histogram of specific results.

********************************************************************************************/
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main()
    {
    const char filename[] = "histogrm.txt"; //this can be later changed to allow user input

    int current, i;
    int count1 = 0, 
        count2 = 0,
        count3 = 0,
        count4 = 0,
        count5 = 0,
        countOther = 0;

    //inform and prompt the user
    cout << endl << "This program will take a set of integers as input and" << endl
         << "after counting the instances of the numbers 1..5 respectively, as" << endl
         << "well as the count of integers not in that range, displays a histogram" << endl
         << "of the results" << endl;

    cout << "The program will return the results when you enter [Ctrl-D] as input." << endl;

    //prompt and extract the rest of the set
    cout << "Enter a set of numbers: ";
    while (cin >> current)
        {
        switch (current) //pigeonhole input and accumulate counts
            {
            case 1:
                count1++;
                break;
            case 2:
                count2++;
                break;
            case 3:
                count3++;
                break;
            case 4:
                count4++;
                break;
            case 5:
                count5++;
                break;
            default:
                countOther++;
            } //switch
        } //while

    //output the results
    cout << endl;

    ofstream outfile(filename);
    if (outfile)
        {
        outfile << "Results:" << endl
                << "1 ";
        for (i=0; i < count1; i++)
            outfile << '*';
        outfile << endl
                << "2 ";
        for (i=0; i < count2; i++)
            outfile << '*';
        outfile << endl
                << "3 ";
        for (i=0; i < count3; i++)
            outfile << '*';
        outfile << endl
                << "4 ";
        for (i=0; i < count4; i++)
            outfile << '*';
        outfile << endl
                << "5 ";
        for (i=0; i < count5; i++)
            outfile << '*';
        outfile << endl
                << "o ";
        for (i=0; i < countOther; i++)
            outfile << '*';
        outfile << endl;

        return 0;
        }
    else
        {
        cerr << "Unable to open \"" << filename << "\" for writing results!" << endl;
        return -1;
        }

    }