简体   繁体   中英

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. 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;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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