1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // stock01.cpp -- revised show() method
- #include <iostream>
- #include "stock00.h"
- void Stock::acquire(const std::string & co, long n, double pr)
- {
- company = co;
- if (n < 0)
- {
- std::cerr << "Number of shares can't be negative; "
- << company << " shares set to 0.\n";
- shares = 0;
- }
- else
- shares = n;
- share_val = pr;
- set_tot();
- }
- void Stock::buy(long num, double price)
- {
- if (num < 0)
- {
- std::cerr << "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::cerr;
- if (num < 0)
- {
- cerr << "Number of shares sold can't be negative. "
- << "Transaction is aborted.\n";
- }
- else if (num > shares)
- {
- cerr << "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);
- int 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);
- }
|