0

プログラムは機能します。私の唯一の問題は、出力を並べる方法がわからないことです。.txt ファイルを使用して実行すると、Cookie の名前、ボックス、および名前が出力されますが、配置されません。また、一人当たりの金額を計算して表示する必要があるのですが、合計の出し方しかわかりません。手伝ってくれてありがとう

#include <iomanip>
#include <string>
#include <fstream>
#include <iostream>
using namespace std;


int main()
{

ifstream inFile;
//Declare Variables

string firstName;
string cookieName;

int boxesSold;
int numCustomers = 0;
double amountDue;
int totalCustomers;
int totalBoxesSold = 0;
double totalAmount = 0;

cout << "Girl Scout Cookies" << endl;
cout << "Created By Aaron Roberts" << endl;

inFile.open("cookie.txt");
if(inFile)
{
cout << "Customer    Number      Cookie" << endl;
cout << "Name        Of Boxes    Name" << endl;

while(inFile >>firstName>>boxesSold>>cookieName)
{
    totalBoxesSold += boxesSold;
    totalAmount += boxesSold * 3.50;

    cout << setprecision(2) << fixed << showpoint;
    cout << setw(2) << firstName 
         << right << setw(7) << boxesSold
         << setw(20) << cookieName 
         << endl;
    numCustomers += 1;

}
cout << "\nNumber of Customers: "<< numCustomers << endl;
cout << "Total Boxes Sold: " << totalBoxesSold << endl;
cout << "Total Amount: $" << totalAmount << endl;
inFile.close();
}

else
{
cout << "Could not open file " << endl;
}

system("pause");
return 0;
}
4

1 に答える 1

0

「CustomerName」列と「NumberOfBoxes」列のヘッダーに12文字を割り当てた場合、データに11文字を割り当て、末尾のスペースに1文字を残しておくとよいでしょう。

明確さと保守性のために、これらの定数を作成することをお勧めします。

int const name_column_width = 11;
int const boxes_column_width = 11;

次に、次のように書くことができます。

    std::cout << std::setw(name_column_width) << std::left << "Customer" << ' '
        << std::setw(boxes_column_width) << std::left << "Number" << ' '
        << "Cookie"
        << std:: endl;

    std::cout << std::setw(name_column_width) << std::left << "Name" << ' '
        << std::setw(boxes_column_width) << std::left << "Of Boxes" << ' '
        << "Name"
        << std:: endl;

    while (inFile >> firstName >> boxesSold >> cookieName)
    {
        totalBoxesSold += boxesSold;
        totalAmount += boxesSold * 3.50;

        std::cout << std::setw(name_column_width) << std::left << firstName << ' '
            << std::setw(boxes_column_width) << std::right << boxesSold << ' '
            << cookieName 
            << std::endl;
        ++numCustomers;
    }

これらの列のサイズを変更すると、定数を変更するだけの簡単な問題になります。

于 2013-02-19T02:45:38.013 に答える