#include #include #include using namespace std; class Product_Line { public: Product_Line(string const& pn, int cnt, double pr) : product_name{pn}, count{cnt}, price{pr} {} void print(ostream& os) const { os << product_name << ": " << count << "st * " << price << "kr"; } operator double() const { return count*price; } private: string product_name; int count; double price; }; class Receipt { public: Receipt(int n) : number{n}, reg{} {} void add_transaction(string const& name, int count, double price) { reg.emplace_back(name, count, price); } void print_receipt() { cout << "Receipt no " << number << ": " << endl; for ( auto t : reg ) { t.print(cout); cout << endl; } cout << "===" << endl << "Köpeskilling: " << purchase_value() << "kr" << endl; } double purchase_value() { double purchase_value{0.0}; for ( Product_Line const& t : reg ) { purchase_value += t; } return purchase_value; // return accumulate(reg.cbegin(), reg.cend(), double{}); } private: int number; vector reg; }; int main() { cout << setprecision(2) << fixed; { Receipt r{1}; r.add_transaction("apelsin", 2, 5.0); r.add_transaction("banan", 5, 7.5); r.add_transaction("citron", 1, 15.0); r.print_receipt(); } cout << endl; { Receipt r{2}; r.add_transaction("gurka", 1, 9.0); r.add_transaction("tomat", 5, 18.5); r.add_transaction("sallad", 1, 11.0); r.print_receipt(); } cout << endl; { Receipt r{3}; r.add_transaction("smör", 1, 19.0); r.add_transaction("bröd", 10, 24.5); r.add_transaction("ost", 1, 48.0); r.print_receipt(); } return 0; }