header
//---------------------------------------------------------
// Given the number of each type of ticket sold, this
// program will generate a ticket sales report.
//
// Tickets are sold in three classes: prestige, advantage,
// and general. Prestige ticket holders get the best seats,
// and the advantage ticket holders get the next best.
//
// The ticket sales data is stored in a text file
// containing threes rows of data. Each row contains two
// space-delimited values: ticket price followed by number
// of tickets sold. The first row corresponds to the
// prestige tickets, the second row to the advantage
// tickets, and the third row to general admission.
//
// D. Searls
// Asbury College
// Sep 2007
//---------------------------------------------------------

#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;

int main()
{
    string inFileName;
    ifstream infile;
    
    string outFileName;
    ofstream outfile;
    
    double prestigePrice;
    int prestigeNumber;
    double prestigeSales;
    
    double advantagePrice;
    int advantageNumber;
    double advantageSales;
    
    double generalPrice;
    int generalNumber;
    double generalSales;
    
    int totalNumber;
    double totalSales;
    
    // Get the names of the input and output files
    
    cout << "Enter the name of the data file: ";
    getline(cin, inFileName);
    
    cout << "Enter the name of the output file: ";
    getline(cin, outFileName);
    
    // Read the data from the input file
    
    infile.open(inFileName.c_str());
    infile >> prestigePrice >> prestigeNumber
           >> advantagePrice >> advantageNumber
           >> generalPrice >> generalNumber;
    infile.close();
    
    // Perform the calculations
    
    prestigeSales = prestigePrice * (double)prestigeNumber;
    advantageSales = advantagePrice * (double)advantageNumber;
    generalSales = generalPrice * (double)generalNumber;
    totalNumber = prestigeNumber + advantageNumber + generalNumber;
    totalSales = prestigeSales + advantageSales + generalSales;
    
    // Write the report to the standard output
        
    cout << fixed << setprecision(2);
    cout << endl;
    cout << "        TICKET SALES REPORT" << endl;
    cout << endl;
    cout << "Level       Price  Number  Revenue" << endl;
    cout << "----------------------------------" << endl;
    cout << "Prestige    "
         << setw(5) << prestigePrice
         << setw(8) << prestigeNumber
         << setw(9) << prestigeSales << endl;
    cout << "Advantage   "
         << setw(5) << advantagePrice
         << setw(8) << advantageNumber
         << setw(9) << advantageSales << endl;
    cout << "General     "
         << setw(5) << generalPrice
         << setw(8) << generalNumber
         << setw(9) << generalSales << endl;
    cout << "----------------------------------" << endl;
    cout << "Total       "
         << setw(13) << totalNumber
         << setw(9) << totalSales << endl;
    cout << endl;

    // Write the report to the output file
        
    outfile.open(outFileName.c_str());
    outfile << fixed << setprecision(2);
    outfile << endl;
    outfile << "        TICKET SALES REPORT" << endl;
    outfile << endl;
    outfile << "Level       Price  Number  Revenue" << endl;
    outfile << "----------------------------------" << endl;
    outfile << "Prestige    "
            << setw(5) << prestigePrice
            << setw(8) << prestigeNumber
            << setw(9) << prestigeSales << endl;
    outfile << "Advantage   "
            << setw(5) << advantagePrice
            << setw(8) << advantageNumber
            << setw(9) << advantageSales << endl;
    outfile << "General     "
            << setw(5) << generalPrice
            << setw(8) << generalNumber
            << setw(9) << generalSales << endl;
    outfile << "----------------------------------" << endl;
    outfile << "Total       "
            << setw(13) << totalNumber
            << setw(9) << totalSales << endl;
    outfile.close();

    return 0;
}