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. 【linux】less 命令详解

    转自:https://www.cnblogs.com/GNblog/p/6932252.html less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极 ...

  2. qt 中的画图

  3. 【java虚拟机】jvm调优

    转自:https://www.cnblogs.com/starhu/p/6400348.html?utm_source=itdadao&utm_medium=referral 堆大小设置JVM ...

  4. 入门数据结构与算法,看这一个就够了,知识点+LeetCode实战演练

    本笔记来自拉钩教育300分钟搞定算法面试 算法与数据结构 要掌握一种数据结构,就必须要懂得分析它的优点和缺点. 在考虑是否应当采用一种数据结构去辅助你的算法时,请务必考虑它的优缺点,看看它的缺点是否会 ...

  5. 定位API的原理

    参考:0Day 安全 所有的win_32程序都会加载ntdll.dll和kerner32.dll这两个最基础的动态链接库.如果想要在win_32平台下定位kernel32.dll中的API地址 1,首 ...

  6. Storm重启topology,失败

    storm新加节点,重启topology后,出现错误 如果检查了CPU和内存不高后,还出现 java.lang.OutOfMemoryError: unable to create new nativ ...

  7. ES6两种静态属性的书写方法

    1.这种可以不用实例化对象就能输出. class Car{ constructor(){ } } Car.tool=4 console.log(Car.tool);//4 2.必须实例化后才能输出.但 ...

  8. jQuery mobile网格布局

    3.4 内容格式化 jQuery Mobile中提供了许多非常有用的工具与组件,如多列的网格布局.折叠形的面板控制等,这些组件可以帮助开发者快速实现正文区域内容的格式化. 3.4.1 网格布局 jQu ...

  9. default错误

    查看根目录发现 修改成index.php可以了

  10. MySQL主从不同步、数据不一致解决办法

    第一种:通过sql_slave_skip_counter跳过同步错误,适用于一般异常如插入时主键冲突 这种情况一般是在从库进行了写操作,错误提示 Last_SQL_Errno: 1062 Last_S ...