123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- // stock1.cpp – Stock class implementation with constructors, destructor added
- #include <iostream>
- #include "stock10.h"
- // constructors (verbose versions)
- Stock::Stock() // default constructor
- {
- std::cout << "Default constructor called\n";
- company = "no name";
- shares = 0;
- share_val = 0.0;
- total_val = 0.0;
- }
- Stock::Stock(const std::string & co, long n, double pr)
- {
- std::cout << "Constructor using " << co << " called\n";
- company = co;
- if (n < 0)
- {
- std::cout << "Number of shares can't be negative; "
- << company << " shares set to 0.\n";
- shares = 0;
- }
- else
- shares = n;
- share_val = pr;
- set_tot();
- }
- // class destructor
- Stock::~Stock() // verbose class destructor
- {
- std::cout << "Bye, " << company << "!\n";
- }
- // other methods
- void Stock::buy(long num, double price)
- {
- if (num < 0)
- {
- std::cout << "Number of shares purchased can't be negative. "
- << "Transaction is aborted.\n";
- }
- else
- {
- shares += num;
- share_val = price;
- set_tot();
- }
- }
- void Stock::sell(long num, double price)
- {
- using std::cout;
- if (num < 0)
- {
- cout << "Number of shares sold can't be negative. "
- << "Transaction is aborted.\n";
- }
- else if (num > shares)
- {
- cout << "You can't sell more than you have! "
- << "Transaction is aborted.\n";
- }
- else
- {
- shares -= num;
- share_val = price;
- set_tot();
- }
- }
- void Stock::update(double price)
- {
- share_val = price;
- set_tot();
- }
- void Stock::show()
- {
- using std::cout;
- using std::ios_base;
- // set format to #.###
- ios_base::fmtflags orig =
- cout.setf(ios_base::fixed, ios_base::floatfield);
- std::streamsize prec = cout.precision(3);
- cout << "Company: " << company
- << " Shares: " << shares << '\n';
- cout << " Share Price: $" << share_val;
- // set format to #.##
- cout.precision(2);
- cout << " Total Worth: $" << total_val << '\n';
- // restore original format
- cout.setf(orig, ios_base::floatfield);
- cout.precision(prec);
- }
|