12.3

//stock.h
#ifndef STOCK_H_
#define STOCK_H_

#include<string>

class Stock
{
private:
	std::string company;
	int shares;
	double share_val;
	double total_val;
	void set_tot(){total_val=shares*share_val;}
public:
	Stock();
	Stock(const std::string &co,long n =0,double pr =0.0);
	~Stock();
	void buy(long num,double price);
	void sell(long num,double price);
	void update(double price);
	friend std::ostream & operator<<(std:: ostream & os,const Stock &st);
	const Stock & topval(const Stock &s) const;
};
#endif
//stock.cpp
#include<iostream>
#include"stock.h"

Stock::Stock()
{
	company = "no name";
	shares = 0;
	share_val =0.0;
	total_val = 0.0;
}
	Stock::~Stock()
	{
	}
Stock::Stock(const std::string &co,long n,double pr)
{
	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();}
void Stock::buy(long num,double price)
{
	if(num<0)
	{
		std::cout<<"number of shares purchased can't be negative."<<"Transanction 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."<<std::endl;
	}
	else if(num>shares)
	{
		cout<<"you can't sell more than you have!"<<std::endl;
	}
	else
	{
		shares-=num;
		share_val = price;
		set_tot();
	}
}
void Stock::update(double price)
{
	share_val=price;
	set_tot();
}
std::ostream& operator<<(std:: ostream & os,const Stock &st)
{
	os<<" shares:"<<st.shares<<"  company:"<<st.company<<"  share_val:"<<st.share_val<<"  total:"<<st.total_val;
	return os;
}
const Stock & Stock::topval(const Stock& s) const
{
	if(s.total_val>total_val)
	   return s;
	else
		return *this;
}
//stock.cpp
#include<iostream>
#include"stock.h"

Stock::Stock()
{
	company = "no name";
	shares = 0;
	share_val =0.0;
	total_val = 0.0;
}
	Stock::~Stock()
	{
	}
Stock::Stock(const std::string &co,long n,double pr)
{
	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();}
void Stock::buy(long num,double price)
{
	if(num<0)
	{
		std::cout<<"number of shares purchased can't be negative."<<"Transanction 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."<<std::endl;
	}
	else if(num>shares)
	{
		cout<<"you can't sell more than you have!"<<std::endl;
	}
	else
	{
		shares-=num;
		share_val = price;
		set_tot();
	}
}
void Stock::update(double price)
{
	share_val=price;
	set_tot();
}
std::ostream& operator<<(std:: ostream & os,const Stock &st)
{
	os<<" shares:"<<st.shares<<"  company:"<<st.company<<"  share_val:"<<st.share_val<<"  total:"<<st.total_val;
	return os;
}
const Stock & Stock::topval(const Stock& s) const
{
	if(s.total_val>total_val)
	   return s;
	else
		return *this;
}
//main.cpp
#include<iostream>
#include"stock.h"
 const int STKS = 4;
 int main()
 {
	 Stock stocks[STKS] = {
		 Stock("Nanosmart", 12,20.0),
		 Stock("Boffo ",200,2.0),
		 Stock("Monolithic",130,3.25),
		 Stock("Fleep ",60,6.5)
	 };
	 std::cout<<"Stock holdings"<<std::endl;
	 int st;
	 for(st = 0;st<STKS;st++)
	std::cout<<stocks[st]<<std::endl;
	 const Stock * top = &stocks[0];
	 for(st = 1;st<STKS;st++)
	 {
		 top = &top->topval(stocks[st]);
	 }

	 std::cout<<"\n most valuable holding:\n";
	 std::cout<<*top;
	 system("pause");

	 return 0;
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值