#include <iostream>
#include <string>
#include <map>
class Item {
public :
Item( ) { } ;
Item( int is, float upp, float usp) :
in_stock( is) , unit_purchase_price( upp) ,
unit_sale_price( usp) { } ;
int in_stock;
float unit_purchase_price;
float unit_sale_price;
} ;
class Inventory {
private :
typedef std:: map < std:: string ,Item> item_map;
typedef std:: map < std:: string ,Item> :: const_iterator im_i;
item_map m;
public :
void update_item( std:: string const & item, int update_quantity,
float buy_price, float sell_price) {
Item i( update_quantity, buy_price, sell_price) ;
m[ item] = i;
}
void print_items( void ) const {
std:: cout << "Item,In_Stock,Purchase_Price,Sale_Price" << std:: endl ;
for ( im_i i = m.begin ( ) ;
i! = m.end ( ) ;
++ i)
std:: cout << i- > first << "," << i- > second.in_stock << ","
<< i- > second.unit_purchase_price << ","
<< i- > second.unit_sale_price << std:: endl ;
}
float profit( std:: string const & a_thing) const {
im_i it = m.find ( a_thing) ;
if ( it == m.end ( ) ) {
std:: cout << "No such item" << std:: endl ; // well shit
return 0.0 ;
}
return static_cast < float > ( it- > second.in_stock ) *
( it- > second.unit_sale_price - it- > second.unit_purchase_price ) ;
}
} ;
int main( ) {
Inventory i;
i.update_item ( "A fucking toast" , 1 , 0.5 , 100.0 ) ;
i.update_item ( "oranges" , 10 , 1.5 , 10.0 ) ;
i.update_item ( "Unruly children" , 6 , 25 , 130.50 ) ;
i.update_item ( "Dwarves" , 1.5 , 5550 , 51000.00 ) ;
i.print_items ( ) ;
std:: cout << "Profit for \" A fucking toast\" : " << i.profit ( "A fucking toast" ) << std:: endl ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgoKY2xhc3MgSXRlbSB7CiAgICBwdWJsaWM6CgkJSXRlbSgpe307CgkJSXRlbShpbnQgaXMsIGZsb2F0IHVwcCwgZmxvYXQgdXNwKSA6CgkJCWluX3N0b2NrKGlzKSwgdW5pdF9wdXJjaGFzZV9wcmljZSh1cHApLAoJCQl1bml0X3NhbGVfcHJpY2UodXNwKSB7fTsKCQlpbnQgaW5fc3RvY2s7CgkJZmxvYXQgdW5pdF9wdXJjaGFzZV9wcmljZTsKCQlmbG9hdCB1bml0X3NhbGVfcHJpY2U7Cn07CgpjbGFzcyBJbnZlbnRvcnkgewoJcHJpdmF0ZToKCQl0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLEl0ZW0+IGl0ZW1fbWFwOwoJCXR5cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsSXRlbT46OmNvbnN0X2l0ZXJhdG9yIGltX2k7CgkJaXRlbV9tYXAgbTsKCXB1YmxpYzoKCQl2b2lkIHVwZGF0ZV9pdGVtKHN0ZDo6c3RyaW5nIGNvbnN0ICYgaXRlbSwgaW50IHVwZGF0ZV9xdWFudGl0eSwKCQkJCQlmbG9hdCBidXlfcHJpY2UsIGZsb2F0IHNlbGxfcHJpY2UpewoKCQkJSXRlbSBpKHVwZGF0ZV9xdWFudGl0eSwgYnV5X3ByaWNlLCBzZWxsX3ByaWNlKTsKCQkJbVtpdGVtXSA9IGk7CgkJfQoJCXZvaWQgcHJpbnRfaXRlbXModm9pZCkgY29uc3R7CgkJCXN0ZDo6Y291dCA8PCAiSXRlbSxJbl9TdG9jayxQdXJjaGFzZV9QcmljZSxTYWxlX1ByaWNlIiA8PCBzdGQ6OmVuZGw7CgkJCWZvciggaW1faSBpID0gbS5iZWdpbigpOwoJCQkJaSE9IG0uZW5kKCk7CgkJCQkrK2kpCgkJCQlzdGQ6OmNvdXQgPDwgaS0+Zmlyc3QgPDwgIiwiIDw8IGktPnNlY29uZC5pbl9zdG9jayA8PCAiLCIKCQkJCQk8PCBpLT5zZWNvbmQudW5pdF9wdXJjaGFzZV9wcmljZSA8PCAiLCIgCgkJCQkJPDwgaS0+c2Vjb25kLnVuaXRfc2FsZV9wcmljZSA8PCBzdGQ6OmVuZGw7CgkJfQoJCWZsb2F0IHByb2ZpdChzdGQ6OnN0cmluZyBjb25zdCAmIGFfdGhpbmcpIGNvbnN0ewoJCQlpbV9pIGl0ID0gbS5maW5kKGFfdGhpbmcpOwoJCQlpZiggaXQgPT0gbS5lbmQoKSApewoJCQkJc3RkOjpjb3V0IDw8ICJObyBzdWNoIGl0ZW0iIDw8IHN0ZDo6ZW5kbDsgLy8gd2VsbCBzaGl0CgkJCQlyZXR1cm4gMC4wOwoJCQl9CgkJCXJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oIGl0LT5zZWNvbmQuaW5fc3RvY2spKgoJCQkJKGl0LT5zZWNvbmQudW5pdF9zYWxlX3ByaWNlIC0gaXQtPnNlY29uZC51bml0X3B1cmNoYXNlX3ByaWNlKTsKCQl9Cn07CgoKaW50IG1haW4oKXsKCUludmVudG9yeSBpOwoJaS51cGRhdGVfaXRlbSgiQSBmdWNraW5nIHRvYXN0IiwgMSwgMC41LCAxMDAuMCk7CglpLnVwZGF0ZV9pdGVtKCJvcmFuZ2VzIiwgMTAsIDEuNSwgMTAuMCk7CglpLnVwZGF0ZV9pdGVtKCJVbnJ1bHkgY2hpbGRyZW4iLCA2LCAyNSwgMTMwLjUwKTsKCWkudXBkYXRlX2l0ZW0oIkR3YXJ2ZXMiLCAxLjUsIDU1NTAsIDUxMDAwLjAwKTsKCWkucHJpbnRfaXRlbXMoKTsKCXN0ZDo6Y291dCA8PCAiUHJvZml0IGZvciBcIkEgZnVja2luZyB0b2FzdFwiOiAiIDw8IGkucHJvZml0KCJBIGZ1Y2tpbmcgdG9hc3QiKSA8PCBzdGQ6OmVuZGw7Cn0K
stdout
Item,In_Stock,Purchase_Price,Sale_Price
A fucking toast,1,0.5,100
Dwarves,1,5550,51000
Unruly children,6,25,130.5
oranges,10,1.5,10
Profit for "A fucking toast": 99.5