// *************************************************************
// vwlcount.cpp - Vowel Counting Program
//
// This is a sample program demonstrating file input and output.
// It also previews the use of strings and boolean variables.
//
// It counts the lines, characters and vowels in a text file.
//

#include <fstream.h>      // For File I/O
#include <iostream.h>
#include <iomanip.h>

int main()
{
    char current;        // current character from file

    int  vwlcount = 0;   // vowel count
    int  charcount = 0;  // character count
    int  linecount = 0;  // line count

    bool file_output;    // Output to file? (otherwise screen)

    char input_name[80];   // name of input file
    char output_name[] = "VWLSTAT.TXT";  // name of output file

    // Declare File Variables
    ifstream INFILE;
    ofstream OUTFILE;

    // Prompt User
    cout << "Vowel Counter" << endl << endl;
    cout << "Enter name of file to examine: ";
    cin >> input_name;
    cout << "Output to a file (y/n)? ";
    cin >> current;
    if (current == 'Y' || current == 'y')
    {
        file_output = true;
        cout << "Output will be sent to: " << output_name << endl;
    }
    else
    {
        file_output = false;
        cout << "Output will be sent to the screen" << endl;
    }

    // Open Files and check Status
    INFILE.open(input_name);
    if (INFILE.bad() )
    {
        cout << "Error Opening INPUT file" << endl;
        return 1;
    }


    // Priming Read
    INFILE.get(current);

    // Process Input File
    while ( !INFILE.eof() )
    {

        switch (current)
        {
           case 'A':
           case 'E':
           case 'I':  
           case 'a':  case 'e':  case 'i':
           case 'o':  case 'u':
           case 'O':
           case 'U': vwlcount++;
                     break;
           case '\n': linecount++;
                     break;
           default:  charcount++;
                     break;
        } // end switch

// TRY Both of these statements (one at a time) to see the difference
//        INFILE.get(current);

//        INFILE >> current;

    }// end while loop

    cout << "Done processing " << input_name << endl;

    // Output
    if (file_output)
    {
        OUTFILE.open(output_name);
        if (OUTFILE.bad() )
        {
            cout << "Error Opening OUTPUT file" << endl;
            return 1;
        }

        OUTFILE << "This file contained: " << endl << endl;
        OUTFILE << "\t" << setw(5) ;

        OUTFILE << linecount << " lines" << endl;
        OUTFILE << "\t" << setw(5) ;

        OUTFILE << charcount << " characters" << endl;
        OUTFILE << "\t" << setw(5) ;

        OUTFILE << vwlcount << " vowels" << endl;
        OUTFILE.close();
    } // end output to file
    else
    {
       cout << "This file contained: " << endl << endl;
        cout << "\t" << setw(5) ;

        cout << linecount << " lines" << endl;
        cout << "\t" << setw(5) ;

        cout << charcount << " characters" << endl;
        cout << "\t" << setw(5) ;

        cout << vwlcount << " vowels" << endl;

    } // end output to file

    // Close Input File
    INFILE.close();

    // Pause Screen Output
        cout << endl << "Enter any letter to quit: ";
        cin  >> current;

    return 0;

}// end main