简体   繁体   English

不能弄清楚如何循环计算单个学生的总数

[英]Cant figure out how to calculate individual students totals in a loop

I am having an issue with this program. 我对此程序有疑问。 I need it to ask for a user id then ask for book code and then the cost of a book. 我需要它来询问用户ID,然后询问书籍代码,然后询问书籍成本。 An individual can enter an unknown number of books. 个人可以输入未知数量的书。 the program needs to then calculate the individual students book total and then ask another student who does the same. 该程序需要计算出各个学生的书籍总数,然后问另一个做同样的学生。 the program must then display the grand totals and total number of books. 然后,程序必须显示总计和书籍总数。 I cant seem to figure out what to use to be able to keep track of the individual students entries. 我似乎无法弄清楚该使用什么来跟踪每个学生的条目。 I would be able to do this from what I was reading about arrays. 通过阅读有关数组的信息,我可以做到这一点。 But we are not to that point yet. 但是我们还没有到这一点。 The professor wants us to do this with a loop. 教授希望我们循环执行此操作。 I am so lost, any help would be awesome. 我很迷茫,任何帮助都会很棒。

#include <iostream>
#include <iomanip>

using namespace std;
int main ()
{
    //Declare Variables.
    int student_id;
    char book_code;
    float book_cost;
    float tax_amount;
    float book_subtotal;
    const int SENTINEL = -9999;
    const double TAX = .07;
    float total_book_cost;
    int number_books;
    int total_books_sold;
    double grand_total;

    //Set Variables to Zero.
    number_books = 0;
    total_book_cost = 0.00;
    grand_total = 0.00;

    //Set Decimal to two places.
    cout << fixed << showpoint;
    cout << setprecision(2);

    //Input Data
    cout<<"Please enter your Student ID, then press enter."<<endl;
    cin>>student_id;
    while (student_id != SENTINEL){
        cout<<"Please enter your Book Code, then press enter."<<endl;
        cin>>book_code;
        cout<<"Please enter the cost of the book, then press enter."<<endl;
        cout<<"$"; cin>>book_cost;
        tax_amount = book_cost * TAX;
        book_subtotal = book_cost + tax_amount;
        total_book_cost += book_subtotal;
        number_books++;
        cout<<"\tStudent Textbook Purchases Report"<<endl;
        cout<<"********************************************"<<endl;
        cout<<"Student"<<"\tBook"<<"\tBook"<<"\tTax"<<"\tBook"<<endl;
        cout<<"Id"<<"\tCode"<<"\tCost"<<"\tAmount"<<"\tSubtotal"<<endl;
        cout<<"--------------------------------------------"<<endl;
        cout<<student_id<<setw(5)<<book_code<<setw(8)<<"$"<<book_cost<<
        setw(3)<<"$"<<tax_amount<<setw(4)<<"$"<<book_subtotal<<endl;
        cout<<endl;
        cout<<"Total number of books purchased:"<<setw(8)<<number_books<<endl;
        cout<<"Total books cost including tax:"<<setw(9)<<"$"<<total_book_cost<<endl;
        cout<<"Please enter your Student ID, then press enter."<<endl;
        cin>>student_id;
    }
    grand_total += total_book_cost;
    total_books_sold += number_books;
    cout<<"**************************************************"<<endl;
    cout<<"Grand Totals:"<<endl;
    cout<<"Total number of students who purchased books:"<<endl;
    cout<<"Total number of books sold:"<<endl;
    cout<<"Total cost of all books and taxes:"<<setw(9)<<"$"<<grand_total<<endl;

    //Can put grand totals here

    system("Pause");
    return 0;
}

You could use the loop as this: 您可以这样使用循环:

#include <iostream>
#include <iomanip>

using namespace std;
int main ()
{

    //Set Decimal to two places.
    cout << fixed << showpoint;
    cout << setprecision(2);


    int total_books_sold = 0;
    double grand_total = 0.0;

    const int SENTINEL = -9999;
    int     student_id = SENTINEL;
    //Input Data
    cout<<"Please enter your Student ID, then press enter."<<endl;
    cin>>student_id;

    while (student_id != SENTINEL){

        double  total_book_cost = 0.0;
        int     number_books = 0;
        char    book_code = '\0';
        while (true) 
        {
            cout<<"Please enter your Book Code, then press enter."<<endl;
            cin>>book_code;

            if (book_code == 'x')
                break;

            float   book_cost;
            cout<<"Please enter the cost of the book, then press enter."<<endl;
            cout<<"$"; cin>>book_cost;

            const double TAX = .07;
            double tax_amount = book_cost * TAX;
            double book_subtotal = book_cost + tax_amount;

            total_book_cost += book_subtotal; 
            number_books++;

            cout<<"\tStudent Textbook Purchases Report"<<endl;
            cout<<"********************************************"<<endl;
            cout<<"Student"<<"\tBook"<<"\tBook"<<"\tTax"<<"\tBook"<<endl;
            cout<<"Id"<<"\tCode"<<"\tCost"<<"\tAmount"<<"\tSubtotal"<<endl;
            cout<<"--------------------------------------------"<<endl;
            cout<<student_id<<setw(5)<<book_code<<setw(8)<<"$"<<book_cost<<
                setw(3)<<"$"<<tax_amount<<setw(4)<<"$"<<book_subtotal<<endl;
            cout<<endl;

        };


        grand_total += total_book_cost;
        total_books_sold += number_books;

        cout<<"Total number of books purchased:"<<setw(8)<<number_books<<endl;
        cout<<"Total books cost including tax:"<<setw(9)<<"$"<<total_book_cost<<endl;
        cout<<"Please enter your Student ID, then press enter."<<endl;
        cin>>student_id;
    }


    cout<<"**************************************************"<<endl;
    cout<<"Grand Totals:"<<endl;
    cout<<"Total number of students who purchased books:"<<endl;
    cout<<"Total number of books sold:"<<endl;
    cout<<"Total cost of all books and taxes:"<<setw(9)<<"$"<<grand_total<<endl;

    //Can put grand totals here

    system("Pause");
    return 0;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM