c++ Primer Plus第六版第十章程序清单10.7-8-9

这是一个C++程序,定义了一个Stock类,用于管理股票信息,包括公司名、持股数、股价、总价值等。类提供了构造函数、析构函数、买入、卖出、更新价格和显示股票详情的方法。程序还包含一个函数用于找出股票数组中最值钱的股票。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#ifndef STOCK
#define STOCK
#include

class Stock //类声明
{
private:
std::string company;
long 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);
void show() const; //const在后面表示不可修改函数内部的值
const Stock & topval(const Stock &s) const;//返回const Stock类型的引用:参数是引用,返回值也是引用
}; //千万别忘了分号

#endif
#include
#include “stock.h”
using namespace std;

//构造函数
Stock::Stock(){
company=“no name”;
shares=0;
share_val=0.0;
total_val=0.0;
}
Stock::Stock(const std::string &co,long n,double pr){
company=co;
if(n<0){
cout<<company<<endl;
shares=0;
}else
shares=n;
share_val=pr;
set_tot();
}
//类的析构函数
Stock::~Stock(){
}

void Stock::buy(long num,double price){
if(num<0)
std::cout<<“Error!\n”;
else{
shares+=num;
share_val=price;
set_tot();
}
}

void Stock::sell(long num,double price){
if(num<0)
cout<<“Error!\n”;
else if(num>shares)
cout<<“You can not sell more than you have!\n”;
else{
shares-=num;
share_val=price;
set_tot();
}
}

void Stock::update(double price){
share_val=price;
set_tot();
}

void Stock::show() const{
ios_base::fmtflags orig=cout.setf(ios_base::fixed,ios_base::floatfield);//设置cout对象的一个标记,命令cout使用定点表示法
streamsize prec=cout.precision(3);//cout使用定点表示法时,显示三位小数
cout<<“Company: “<<company<<”, Shares:”<<shares<<"\n Share Price: $"<<share_val;
cout.precision(2);//显示2位小数
cout<<", Total Worth: $"<<total_val<<endl;
cout.setf(orig,ios_base::floatfield);
cout.precision(prec);
}

const Stock & Stock::topval(const Stock &s) const{
if(s.total_val>total_val)
return s;
else
return *this;
}
#include
#include “stock.h”

const int STKS=4;
int main()
{
Stock stocks[STKS]={
Stock(“Nano”,12,20.0),
Stock(“Boffo”,200,2.0),
Stock(“Mono”,130,3.25),
Stock(“Fleep”,60,6.5),
};
std::cout<<“Stock holdings:\n”;
int st;
for (st = 0; st < STKS; st++)
stocks[st].show();
const Stock * top=&stocks[0];
for (st = 1; st < STKS; st++)
top=&top->topval(stocks[st]);
std::cout<<"\nMost valuale holding:\n";
top->show();
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值