C++ Primer Plus编程练习答案——第10章
Posted 开心果壳好硬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer Plus编程练习答案——第10章相关的知识,希望对你有一定的参考价值。
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:以上是关于C++ Primer Plus编程练习答案——第10章的主要内容,如果未能解决你的问题,请参考以下文章