1 void ch6_1() {
2 using namespace std;
3 char ch;
4 while ((ch = cin.get()) != '@') {
5 if (isdigit(ch))
6 continue;
7 else if (islower(ch))
8 ch = toupper(ch);
9 else if (isupper(ch))
10 ch = tolower(ch);
11 cout << ch;
12 }
13 }
14
15 void ch6_2() {
16 using namespace std;
17 const unsigned int ArrSize = 10;
18 double donations[ArrSize]{0};
19 double average{0};
20 unsigned int overcount{0};
21 cout << "enter 10 donations in double: " << endl;
22 for (int i = 0; i < ArrSize; ++ i) {
23 while (!(cin >> donations[i])) {
24 cin.clear();
25 while (cin.get() != '\n')
26 continue;
27 cout << "must enter a double: ";
28 }
29 }
30 for (int i = 0; i < ArrSize; ++ i)
31 average += donations[i];
32 average /= ArrSize;
33 for (int i = 0; i < ArrSize; ++ i)
34 if (donations[i] > average)
35 ++ overcount;
36 cout << "average donation: " << average << endl;
37 cout << overcount << " donations above average" << endl;
38 }
39
40 void ch6_3() {
41 using namespace std;
42 char ch;
43 cout << "Please enter one of the following choices: " << endl;
44 cout << "c) carnivore \t p) pianist" << endl;
45 cout << "t) tree \t g) game" << endl;
46 bool loop = true;
47 while (loop) {
48 cin >> ch;
49 switch (ch) {
50 case 'c':
51 cout << "carnivore" << endl;
52 loop = false;
53 break;
54 case 'p':
55 cout << "pianist" << endl;
56 loop = false;
57 break;
58 case 't':
59 cout << "tree" << endl;
60 loop = false;
61 break;
62 case 'g':
63 cout << "game" << endl;
64 loop = false;
65 break;
66 default:
67 cout << "Please enter a c, p, t, or g: ";
68 break;
69 }
70 }
71 }
72
73 void ch6_4() {
74 using namespace std;
75 const int strsize = 100;
76 struct bop {
77 char fullname[strsize];
78 char title[strsize];
79 char bopname[strsize];
80 int preference; // 0 = fullname, 1 = title, 2 = bopname
81 };
82 const int ArSize = 3;
83 bop member[ArSize] = {
84 {"fullname1", "title1", "bopname1", 3},
85 {"fullname2", "title2", "bopname2", 2},
86 {"fullname3", "title3", "bopname3", 1}
87 };
88 bool loop = true;
89 char ch;
90 cout << "Benevolent Order of Programmers Report" << endl
91 << "a. display by name \t b. display by title" << endl
92 << "c. display by bopname \t b. display by preference" << endl
93 << "q. quit" << endl;
94 while (loop) {
95 cout << "Enter your choice: ";
96 cin >> ch;
97 switch (ch) {
98 case 'a':
99 for (int i = 0; i < ArSize; ++ i)
100 cout << member[i].fullname << endl;
101 break;
102 case 'b':
103 for (int i = 0; i < ArSize; ++ i)
104 cout << member[i].title << endl;
105 break;
106 case 'c':
107 for (int i = 0; i < ArSize; ++ i)
108 cout << member[i].bopname << endl;
109 break;
110 case 'd':
111 for (int i = 0; i < ArSize; ++ i) {
112 if (member[i].preference == 1)
113 cout << member[i].fullname << endl;
114 else if (member[i].preference == 2)
115 cout << member[i].title << endl;
116 else
117 cout << member[i].bopname << endl;
118 }
119 break;
120 case 'q':
121 loop = false;
122 default:
123 cout << "enter a, b, c, d, or q: ";
124 break;
125 }
126 }
127 }
128
129 void ch6_5() {
130 using namespace std;
131 unsigned int salary{0};
132 double tax{0};
133 while (true) {
134 cout << "enter your salary: ";
135 if (!(cin >> salary)) {
136 cout << "invalid input!" << endl;
137 break;
138 }
139 if (salary <= 5000)
140 tax = 0;
141 else if (salary > 5000 && salary <= 15000)
142 tax = (salary - 5000) * 0.1;
143 else if (salary > 15000 && salary <= 35000)
144 tax = 10000 * 0.1 + (salary - 15000) * 0.15;
145 else
146 tax = 10000 * 0.1 + 20000 * 0.15 + (salary - 35000) * 0.2;
147 cout << "tax: " << tax << endl;
148 }
149
150 }
151
152 void ch6_6() {
153 using namespace std;
154 struct donator {
155 string name;
156 double amount;
157 };
158 unsigned int donum{0};
159 cout << "enter number of donators: ";
160 while (!(cin >> donum)) {
161 cin.clear();
162 while (cin.get() != '\n')
163 continue;
164 cout << "enter a number: ";
165 }
166 cin.get();
167 donator * donator_arr = new donator[donum];
168 cout << "enter name and amount for each donator" << endl;
169 for (int i = 0; i < donum; ++ i) {
170 cout << "#" << i + 1 << " name: ";
171 getline(cin, donator_arr[i].name);
172 cout << "#" << i + 1 << " amount: ";
173 while (!(cin >> donator_arr[i].amount)) {
174 cin.clear();
175 while (cin.get() != '\n')
176 continue;
177 cout << "enter a number: ";
178 }
179 cin.get();
180 }
181 bool grand{false}, normal{false};
182 cout << endl << "Grand Patrons: " << endl;
183 for (int i = 0; i < donum; ++ i)
184 if (donator_arr[i].amount >= 10000) {
185 grand = true;
186 cout << donator_arr[i].name << ": " << donator_arr[i].amount << endl;
187 }
188 if (!grand)
189 cout << "None!" << endl;
190 cout << endl << "Other Patrons: " << endl;
191 for (int i = 0; i < donum; ++ i)
192 if (donator_arr[i].amount < 10000) {
193 normal = true;
194 cout << donator_arr[i].name << ": " << donator_arr[i].amount << endl;
195 }
196 if (!normal)
197 cout << "None!" << endl;
198 }
199
200 void ch6_7() {
201 using namespace std;
202 string word;
203 int vowels{0}, consonant{0}, other{0};
204 cout << "Enter words (q to quit): " << endl;
205 cin >> word;
206 while (word != "q") {
207 if (isalpha(word[0])) {
208 switch (word[0]) {
209 case 'a':
210 case 'e':
211 case 'i':
212 case 'o':
213 case 'u':
214 ++ vowels;
215 break;
216 default:
217 ++ consonant;
218 break;
219 }
220 }
221 else
222 ++ other;
223 cin >> word;
224 }
225 cout << vowels << " words beginning with vowels" << endl
226 << consonant << " words beginning with consonants" << endl
227 << other << " others" << endl;
228 }
229
230 void ch6_8() {
231 using namespace std;
232 const string FILENAME = "../C++PrimerPlus/testfiles/test.txt";
233 ifstream InFile;
234 InFile.open(FILENAME);
235 if (!InFile.is_open()) {
236 cout << "file not found" << endl;
237 return;
238 }
239 unsigned int count{0};
240 char ch;
241 while ((ch = InFile.get()) != EOF)
242 ++ count;
243 InFile.close();
244 cout << count << " chars in this file" << endl;
245 }
246
247 void ch6_9() {
248 using namespace std;
249 struct donator {
250 string name;
251 double amount;
252 };
253 const string FILENAME = "../C++PrimerPlus/testfiles/patrons.txt";
254 ifstream InFile;
255 InFile.open(FILENAME);
256 if (!InFile.is_open()) {
257 cout << "file not found" << endl;
258 return;
259 }
260 unsigned int donum{0};
261 InFile >> donum; InFile.get();
262 donator * donator_arr = new donator[donum];
263 for (int i = 0; i < donum; ++ i) {
264 getline(InFile, donator_arr[i].name);
265 InFile >> donator_arr[i].amount;
266 InFile.get();
267 }
268 InFile.close();
269 bool grand{false}, normal{false};
270 cout << endl << "Grand Patrons: " << endl;
271 for (int i = 0; i < donum; ++ i)
272 if (donator_arr[i].amount >= 10000) {
273 grand = true;
274 cout << donator_arr[i].name << ": " << donator_arr[i].amount << endl;
275 }
276 if (!grand)
277 cout << "None!" << endl;
278 cout << endl << "Other Patrons: " << endl;
279 for (int i = 0; i < donum; ++ i)
280 if (donator_arr[i].amount < 10000) {
281 normal = true;
282 cout << donator_arr[i].name << ": " << donator_arr[i].amount << endl;
283 }
284 if (!normal)
285 cout << "None!" << endl;
286 }

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

  1. 【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 ...

  2. 【C++ Primer Plus】编程练习答案——第11章 (待更新)

    最近开学,事情较多,过两天更新...

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

    1 // chapter10_1_account.h 2 3 #ifndef LEARN_CPP_CHAPTER10_1_ACCOUNT_H 4 #define LEARN_CPP_CHAPTER10 ...

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

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

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

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

  6. 【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_ ...

  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. lock学习篇(上)

    why? 当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待. 但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候, ...

  2. 二 MongoDB数据类型和$type操作符

    一.MongoDB中可以使用的类型如下表所示 二.$type操作符 举个例子:想获取指定集合中title为String类型的所有文档

  3. Git使用:

    配置可参考: 配置name 及email:$ git config --global user.name "Your Name"$ git config --global user ...

  4. 你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?

    JavaScript 中 Arguments 对象的用途总结. 前言 相信我们很多人在代码开发的过程中都使用到过一个特殊的对象 -- Arguments 对象. 在实际开发中,Arguments 对象 ...

  5. Kickstart部署之NFS架构

    原文转自:https://www.cnblogs.com/itzgr/p/10200615.html作者:木二 目录 一 准备 1.1 完整架构:Kickstart+DHCP+NFS+TFTP+PXE ...

  6. thinkphp5.x在函数禁用的情况下绕过

    描述 测试的时候发现一个thinkphp的网站,有tp5的漏洞但无法执行命令,但没机会进行后续测试,所有在这里自己搭建环境进行复现一下. 使用的是tp5.0.16 一开始使用网上的payload打一直 ...

  7. 录制脚本启动报错:target controller is configured to “use recording Controller” but no such controller exists,ensure you add a Recording Controller as child of Thread Group node to start recording correctly

    使用JMeter自带录制脚本元件录制,已配置好代理,启动时报错,如图 解决方案: 未指定录制请求信息的存放位置,下拉选择后重新启动即可 对于代理配置有疑问可见性能测试工具JMeter 基础(四)-- ...

  8. (二)Superset 1.3图表篇——Time-series Table

    (二)Superset 1.3图表篇--Time-series Table 本系列文章基于Superset 1.3.0版本.1.3.0版本目前支持分布,趋势,地理等等类型共59张图表.本次1.3版本的 ...

  9. epoll代码框架

    epoll代码实现框架: #define MAX_EVENTS 10 struct epoll_event ev, events[MAX_EVENTS]; int listen_sock, conn_ ...

  10. Vue设置全局cookies样式

    ''' 配置全局cookies样式 下载:cnpm install vue-cookies import cookies from 'vue-cookies' Vue.prototype.$cooki ...