1 // chapter10_1_account.h
2
3 #ifndef LEARN_CPP_CHAPTER10_1_ACCOUNT_H
4 #define LEARN_CPP_CHAPTER10_1_ACCOUNT_H
5
6 #include <iostream>
7 #include <string>
8
9
10 class Account {
11 private:
12 std::string name_;
13 std::string id_;
14 double deposit_;
15 public:
16 Account();
17 Account(std::string,std::string,double);
18 void show() const;
19 bool in(double);
20 bool out(double);
21 };
22
23
24 #endif //LEARN_CPP_CHAPTER10_1_ACCOUNT_H
25
26 // chapter10_1_account.cpp
27
28 #include "chapter10_1_account.h"
29
30 Account::Account() {
31 name_ = "none";
32 id_ = "none";
33 deposit_ = 0;
34 }
35
36 Account::Account(std::string name, std::string id, double deposit) {
37 name_ = name;
38 id_ = id;
39 deposit_ = deposit;
40 }
41
42 void Account::show() const {
43 using namespace std;
44 cout.precision(16);
45 cout << "account info: " << endl
46 << "\tname: " << name_ << endl
47 << "\tid: " << id_ << endl
48 << "\tdeposit: " << deposit_ << endl;
49 }
50
51 bool Account::in(double n) {
52 if (n <= 0)
53 return false;
54 else
55 deposit_ += n;
56 return true;
57 }
58
59 bool Account::out(double n) {
60 if (deposit_ < n)
61 return false;
62 else
63 deposit_ -= n;
64 return true;
65 }
66
67 // run
68
69 void ch10_1() {
70 Account a;
71 a.show();
72 Account b{"kxgkhy","4523452345",1000.123};
73 b.show();
74 b.in(123.123);
75 b.show();
76 b.out(123.123);
77 b.show();
78 }
 1 // chapter10_2_person.h
2
3 #ifndef LEARN_CPP_CHAPTER10_2_PERSON_H
4 #define LEARN_CPP_CHAPTER10_2_PERSON_H
5
6 #include <iostream>
7 #include <cstring>
8
9 class Person {
10 private:
11 static const int LIMIT = 25;
12 std::string lname_;
13 char fname_[LIMIT];
14 public:
15 Person();
16 Person(const std::string & lname, const char * fname = "Heyyou");
17 void show() const;
18 void formalshow() const;
19 };
20
21 #endif //LEARN_CPP_CHAPTER10_2_PERSON_H
22
23 // chapter10_2_person.cpp
24
25
26 #include "chapter10_2_person.h"
27
28 Person::Person() {
29 lname_ = "";
30 fname_[0] = '\0';
31 }
32
33 Person::Person(const std::string & lname, const char * fname) {
34 lname_ = lname;
35 strcpy(fname_, fname);
36 }
37
38 void Person::show() const {
39 using namespace std;
40 cout << fname_ << " " << lname_ << endl;
41 }
42
43 void Person::formalshow() const {
44 using namespace std;
45 cout << lname_ << ", " << fname_ << endl;
46 }
47
48
49 // run
50
51 void ch10_2() {
52 Person one;
53 Person two("Smythecraft");
54 Person three("DimWiddy", "Sam");
55 one.show();
56 one.formalshow();
57 two.show();
58 two.formalshow();
59 three.show();
60 three.formalshow();
61 }
 1 // chapter10_3_golf.h
2
3 #ifndef LEARN_CPP_CHAPTER10_3_GOLF_H
4 #define LEARN_CPP_CHAPTER10_3_GOLF_H
5
6
7 class Golf {
8 private:
9 static const int LIMIT = 40;
10 char fullname_[LIMIT];
11 int handicap_;
12 public:
13 Golf();
14 Golf(const char * fullname, int handicap = 0);
15 void setGolf();
16 void show() const;
17 };
18
19
20 #endif //LEARN_CPP_CHAPTER10_3_GOLF_H
21
22
23 // chapter10_3_golf.cpp
24
25
26 #include "chapter10_3_golf.h"
27 #include <iostream>
28 #include <cstring>
29
30 Golf::Golf() {
31 fullname_[0] = '\0';
32 handicap_ = 0;
33 }
34
35 Golf::Golf(const char *fullname, int handicap) {
36 strcpy(fullname_, fullname);
37 handicap_ = handicap;
38 }
39
40 void Golf::setGolf() {
41 using namespace std;
42 char fullname[LIMIT];
43 int handicap;
44 cout << "enter fullname: ";
45 cin.getline(fullname, LIMIT);
46 cout << "enter handicap: ";
47 while (!(cin >> handicap)) {
48 cin.clear();
49 while (cin.get() != '\n')
50 continue;
51 cout << "must a number: ";
52 }
53 *this = Golf(fullname, handicap);
54 }
55
56 void Golf::show() const {
57 using namespace std;
58 cout << "fullname: " << fullname_ << endl
59 << "handicap: " << handicap_ << endl;
60 }
61
62
63 // run
64
65
66
67 void ch10_3() {
68 Golf a;
69 a.show();
70 Golf b("kxg");
71 b.show();
72 Golf c("kxgkhy", 123);
73 c.show();
74 std::cout << "reset c: " << std::endl;
75 c.setGolf();
76 c.show();
77 }
  1 // chapter10_4_sales.h
2
3
4 #ifndef LEARN_CPP_CHAPTER10_4_SALES_H
5 #define LEARN_CPP_CHAPTER10_4_SALES_H
6
7 namespace SALES10
8 {
9 class Sales {
10 private:
11 static const int QUARTERS = 4;
12 double sales_[QUARTERS];
13 double average_;
14 double max_;
15 double min_;
16 public:
17 Sales();
18 Sales(const double * ar, int n);
19 void setSales();
20 void show() const;
21 };
22 }
23
24 #endif //LEARN_CPP_CHAPTER10_4_SALES_H
25
26
27 // chapter10_4_sales.cpp
28
29
30 #include "chapter10_4_sales.h"
31 #include <iostream>
32 #include <cfloat>
33
34 SALES10::Sales::Sales() {
35 for (int i = 0; i < QUARTERS; ++ i)
36 sales_[i] = -1;
37 average_ = -1;
38 min_ = -1;
39 max_ = -1;
40 }
41
42 SALES10::Sales::Sales(const double *ar, int n) {
43 double sum = 0, min = DBL_MAX, max = DBL_MIN;
44 for (int i = 0; i < QUARTERS; ++ i) {
45 if (i < n) {
46 sales_[i] = ar[i];
47 if (sales_[i] < min)
48 min = sales_[i];
49 if (sales_[i] > max)
50 max = sales_[i];
51 sum += sales_[i];
52 }
53 else
54 sales_[i] = -1;
55 }
56 average_ = sum / n;
57 min_ = min;
58 max_ = max;
59 }
60
61 void SALES10::Sales::setSales() {
62 using namespace std;
63 double sum = 0, min = DBL_MAX, max = DBL_MIN;
64 int n = 0;
65 cout << "enter sales: " << endl;
66 for (int i = 0; i < QUARTERS; ++ i) {
67 if (!(cin >> sales_[i]))
68 break;
69 cin.get();
70 ++ n;
71 sum += sales_[i];
72 if (sales_[i] > max)
73 max = sales_[i];
74 if (sales_[i] < min)
75 min = sales_[i];
76 }
77 for (int i = n; i < QUARTERS; ++ i)
78 sales_[i] = -1;
79 average_ = sum / n;
80 min_ = min;
81 max_ = max;
82 }
83
84 void SALES10::Sales::show() const {
85 using namespace std;
86 cout << "sales: ";
87 for (int i = 0; i < QUARTERS; ++ i)
88 if (sales_[i])
89 cout << sales_[i] << " ";
90 cout << endl;
91 cout << "average: " << average_ << endl;
92 cout << "max: " << max_ << endl;
93 cout << "min: " << min_ << endl;
94 }
95
96
97 // run
98
99 void ch10_4() {
100 using std::cout;
101 using std::endl;
102 double s[3] = {1.1,2.2,3.3};
103 SALES10::Sales a(s, 3);
104 a.show();
105 SALES10::Sales b;
106 b.show();
107 b.setSales();
108 b.show();
109 }
1 // chapter10_5
2
3 // run
4
5 void ch10_5() {
6 using namespace std;
7 cout << "landexie o.o" << endl;
8 }
 1 // chapter10_6_move.h
2
3 #ifndef LEARN_CPP_CHAPTER10_6_MOVE_H
4 #define LEARN_CPP_CHAPTER10_6_MOVE_H
5
6
7 class Move {
8 private:
9 double x_;
10 double y_;
11 public:
12 Move(double a = 0, double b = 0);
13 void show() const;
14 Move add(const Move & m) const;
15 void reset(double a = 0, double b = 0);
16 };
17
18
19
20 #endif //LEARN_CPP_CHAPTER10_6_MOVE_H
21
22
23 // chapter10_6_move.cpp
24
25 #include "chapter10_6_move.h"
26 #include <iostream>
27
28 Move::Move(double a, double b) {
29 x_ = a;
30 y_ = b;
31 }
32
33 void Move::show() const {
34 using namespace std;
35 cout << "x: " << x_ << endl
36 << "y: " << y_ << endl;
37 }
38
39 Move Move::add(const Move & m) const {
40 return Move(x_ + m.x_, y_ + m.y_);
41 }
42
43 void Move::reset(double a, double b) {
44 x_ = a;
45 y_ = b;
46 }
47
48 // run
49
50 void ch10_6() {
51 using namespace std;
52 Move a;
53 a.show();
54 Move b(1);
55 b.show();
56 Move c(1,2);
57 c.show();
58 cout << "reset c: " << endl;
59 c.reset(3,4);
60 c.show();
61 cout << "a + b: " << endl;
62 a.add(b).show();
63 }
 1 // chapter10_7_plorg.h
2
3 #ifndef LEARN_CPP_CHAPTER10_7_PLORG_H
4 #define LEARN_CPP_CHAPTER10_7_PLORG_H
5
6 class Plorg {
7 private:
8 static const int LIMIT = 20;
9 char name_[20];
10 unsigned CI_;
11 public:
12 Plorg(const char * name = "Plorga", unsigned CI = 50);
13 void resetCI(unsigned CI);
14 void show() const;
15 };
16
17
18
19 #endif //LEARN_CPP_CHAPTER10_7_PLORG_H
20
21 // chapter10_7_plorg.cpp
22
23
24 #include "chapter10_7_plorg.h"
25 #include <cstring>
26 #include <iostream>
27
28 Plorg::Plorg(const char * name, unsigned int CI) {
29 strcpy(name_, name);
30 CI_ = CI;
31 }
32
33 void Plorg::resetCI(unsigned int CI) {
34 CI_ = CI;
35 }
36
37 void Plorg::show() const {
38 using namespace std;
39 cout << "name: " << name_ << endl
40 << "CI: " << CI_ << endl;
41 }
42
43
44 // run
45
46 void ch10_7() {
47 using namespace std;
48 Plorg a;
49 a.show();
50 Plorg b("kxg");
51 b.show();
52 Plorg c("kxhkhy", 99);
53 c.show();
54 cout << "reset c CI: " << endl;
55 c.resetCI(100);
56 c.show();
57 }
 1 // chapter10_8_list.h
2
3 #ifndef LEARN_CPP_CHAPTER10_8_LIST_H
4 #define LEARN_CPP_CHAPTER10_8_LIST_H
5
6
7 class List {
8 private:
9 static const int MAXSIZE = 50;
10 int arr_[MAXSIZE];
11 int length_;
12 public:
13 List();
14 List(const int * arr, int length = 0);
15 bool append(int n);
16 bool isempty();
17 bool isfull();
18 void visit(void (*pf) (int));
19 };
20
21
22 #endif //LEARN_CPP_CHAPTER10_8_LIST_H
23
24 // chapter10_8_list.cpp
25
26 #include "chapter10_8_list.h"
27
28 List::List() {
29 length_ = 0;
30 }
31
32 List::List(const int *arr, int length) {
33 for (int i = 0; i < length; ++ i)
34 arr_[i] = arr[i];
35 length_ = length;
36 }
37
38 bool List::append(int n) {
39 if (isfull())
40 return false;
41 arr_[length_ ++] = n;
42 return true;
43 }
44
45 bool List::isempty() {
46 if (length_ == 0)
47 return true;
48 else
49 return false;
50 }
51
52 bool List::isfull() {
53 if (length_ == MAXSIZE)
54 return true;
55 else
56 return false;
57 }
58
59 void List::visit(void (*pf)(int)) {
60 for (int i = 0; i < length_; ++ i)
61 pf(arr_[i]);
62 }
63
64
65 // run
66
67 void ch10_8_show(int n) {
68 using namespace std;
69 cout << n << endl;
70 }
71
72 void ch10_8() {
73 List a;
74 a.visit(ch10_8_show);
75 int arr[10] = {1,2,3,4,5,6,7,8,9,10};
76 List b(arr, 10);
77 b.visit(ch10_8_show);
78 b.append(100);
79 b.visit(ch10_8_show);
80 }

【C++ Primer Plus】编程练习答案——第10章的更多相关文章

  1. 20191105 《Spring5高级编程》笔记-第10章

    第10章 使用类型转换和格式化进行验证 在应用程序开发中,数据验证通常与转换和格式化一起被提及.因为数据源的格式很可能与应用程序中所使用的格式不同. 名词缩写: SPI(Service Provide ...

  2. 【C++ Primer Plus】编程练习答案——第12章

    1 // chapter12_1_cow.h 2 3 4 #ifndef LEARN_CPP_CHAPTER12_1_COW_H 5 #define LEARN_CPP_CHAPTER12_1_COW ...

  3. 【C++ Primer Plus】编程练习答案——第9章

    1 // chapter09_golf.h 2 3 #ifndef LEARN_CPP_CHAPTER09_GOLF_H 4 #define LEARN_CPP_CHAPTER09_GOLF_H 5 ...

  4. 【C++ Primer Plus】编程练习答案——第8章

    1 void ch8_1_print(const std::string & str, int n = 0 ) { 2 using namespace std; 3 static int fl ...

  5. 【C++ Primer Plus】编程练习答案——第7章

    1 double ch7_1_harmonicaverage(double a, double b) { 2 return 2 / (1 / a + 1 / b); 3 } 4 5 void ch7_ ...

  6. 【C++ Primer Plus】编程练习答案——第6章

    1 void ch6_1() { 2 using namespace std; 3 char ch; 4 while ((ch = cin.get()) != '@') { 5 if (isdigit ...

  7. 【C++ Primer Plus】编程练习答案——第5章

    1 void ch5_1() { 2 using namespace std; 3 int small, big, sum{0}; 4 cout << "enter small ...

  8. 【C++ Primer Plus】编程练习答案——第4章

    1 void ch4_1() { 2 using namespace std; 3 string fname, lname; 4 char grade; 5 unsigned int age; 6 c ...

  9. 【C++ Primer Plus】编程练习答案——第3章

    1 void ch3_1() { 2 using namespace std; 3 unsigned int factor = 12; 4 unsigned int inch, feet; 5 cou ...

随机推荐

  1. HttpURLconnection的介绍

    一,HttpURLconnection的介绍 在Android开发中网络请求是最常用的操作之一, Android SDK中对HTTP(超文本传输协议)也提供了很好的支持,这里包括两种接口: 1.标准J ...

  2. css - 全屏

    css - 全屏 heml和body元素的宽高 html与body都是块元素,但它俩比较特殊,宽高由如下定义: 1.默认的宽度=浏览器可视区域的宽度(不包含滚动条),可设置大于可视区域的宽度,但不会计 ...

  3. ThreadLocal, volatile, synchronized, map, epoll, AQS简单总结

    ThreadLocal ThreadLocal主要是为了解决内存泄漏的问题,它是一种弱引用: 引用总共有四种,,我简单列一下: 强引用(Strong Reference):正常引用,根据垃圾回收算法, ...

  4. ubuntu下配置JDK的一些坑点

    ubuntu下配置JDK的一些坑点 在centos下的JDK配置: 在ubuntu下的话,要修改两个地方: 在/etc/enviornment中配置! 在/etc/profile中配置! 写在最后: ...

  5. 4、kubernetes基础概念

    一.基础概念 1.Master节点 整个集群的控制中枢.Master节点是Kubernetes集群的控制节点,在生产环境中不建议部署集群核心组件外的任何Pod,公司业务的Pod更是不建议部署到Mast ...

  6. Go测试--性能测试分析

    目录 前言 认识数据 benchstat 分析一组样本 分析两组样本 小结 前言 benchmark测试是实际项目中经常使用的性能测试方法,我们可以针对某个函数或者某个功能点增加benchmark测试 ...

  7. Redis(三):新数据类型

    配置文件redis.conf详解 bind=127.0.0.1 # 表示只能在本机中访问redis,将该行注释掉,即可接收任何IP地址的访问 protected-mode # 设置为no,表示关闭保护 ...

  8. linux系统下查看svn服务是否启动,重启及设置开机重启

    Linux系统中svn服务是否启动,重启及设置开机启动   安装完svn服务器后虽然好用但是因为经常重启Linux服务器,每次重启完就要去手动启动svn服务器,很是麻烦,于是在网上找了一些方法后,自己 ...

  9. ubuntu 16.04 & 18.04 远程桌面使用

    其自带的远程桌面: Server端,被访问端,    Desktop Sharing Client端,访问者的电脑端. Remmina Remote Desktop Client, VNC -> ...

  10. 【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?

    问题描述 当创建一个App Service 后,运行时环境和版本选择Windows 和 Python 3.6. 登录Kudu 站点查看,默认的文件有 web.config, hostingstart- ...