#include #include #include #include #include "CPstring.h" // file: sales2.cc // author Dietolf Ramm; date: 11/14/96 // Process sales ticket with one or more names followed by variable // number of numbers // Illustrate using string streams double Summary(string & ticket) // precondition: ticket contains one or more names followed by one or // more numbers // postcondition: names, number of numbers and sum of numbers is printed { int numsales = 1; istrstream indata(ticket); string word, name = ""; double sale, sales = 0.0; while (indata >> word) { if (isdigit(word[0])) break; name += word + " "; } sales = atof(word); while (indata >> sale) { sales += sale; numsales++; } cout << name << " sold " << numsales << " items worth " << sales << endl; return sales; } int main() { string ticket; double total = 0.0; cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); cout << "Type sale info (enter to quit)" << endl; getline(cin, ticket); while (ticket.length() > 0) { total += Summary(ticket); cout << "Type sale info (enter to quit)" << endl; getline(cin, ticket); } cout << "Total sales were " << total << endl; return 0; } Sample output: sales2 Type sale info (enter to quit) D. Ramm 23.50 40 199.95 D. Ramm sold 3 items worth 263.45 Type sale info (enter to quit) John Queue Public 13.95 44.80 John Queue Public sold 2 items worth 58.75 Type sale info (enter to quit) Mary Marie 1898.25 Mary Marie sold 1 items worth 1898.25 Type sale info (enter to quit) team 24.95 team sold 1 items worth 24.95 Type sale info (enter to quit) Total sales were 2245.40