您的位置:首页 > 理论基础 > 数据结构算法

c++ primer第五版(中文)习题答案 第二章第六节-自定义数据结构

2015-11-03 20:14 393 查看
本博客知识记录自己学习中的笔记或者记录,如果有错误欢迎大家纠正。

转载声明出处

练习 2.39 编译下面的程序观察其运行结果,注意如果忘记类定义体后面的分号会发生什么情况?记录下相关信息,以后可能会有用。

struct Foo{/此处为空/} //注意这里没有分号

int main ()

{

retrun 0;

}

自行编译运行查看结果,这里不贴运行结果了

练习2.40 根据自己的理解写出Sales_data类 最好与书中的例子有所区别,

struct  Sales_data
{
std::string bookNo;
std::string bookName;
unsigned units_sold=0;
double revenue =0;
double price=0.0f;
}


自己添加其他书应有的属性即可,这里只添加了 书名称和 价格

练习2.41使用自己的Sales_data 类重写1.51节,1.52节,1.6节的练习,眼前先把Sales_data 和main函数放在同一个文件。

读者查考前面章节的练习自己改写相关练习,这里不一一改写。

练习2.43 根据你自己的理解重写一个Sales_data.h头文件,并为此基础重做2.6.2的练习。

头文件Sales_data.h定义如下

#include <string>
#include <iostream>

struct Sales_data
{
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;

void CalcRevenue(double price); //计算收益
double CalcAveragePrice();   //得到平均价格
void SetData(Sales_data data);  //设置数据
void AddData(Sales_data data); //增加数据
void Print(); //打印输出 信息
};

void Sales_data::CalcRevenue(double price)
{
revenue = units_sold * price;
}

void Sales_data::SetData(Sales_data data)
{
bookNo = data.bookNo;
units_sold = data.units_sold;
revenue = data.revenue;
}

void Sales_data::AddData(Sales_data data)
{
if (bookNo != data.bookNo) return;
units_sold += data.units_sold;
revenue += data.revenue;
}

double Sales_data::CalcAveragePrice()
{
if (units_sold != 0)
return revenue/units_sold;
else
return 0.0;
}

void Sales_data::Print()
{
std::cout << bookNo << " " << units_sold << " " << revenue << " ";
double averagePrice = CalcAveragePrice();
if (averagePrice != 0.0)
std::cout << averagePrice << std::endl;
else
std::cout << "(no sales)" << std::endl;
}


在源文件调用对应的方法即可完成练习的编写
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: