【C++ Primer Plus】编程练习答案——第6章
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章的更多相关文章
- 【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 ...
- 【C++ Primer Plus】编程练习答案——第11章 (待更新)
最近开学,事情较多,过两天更新...
- 【C++ Primer Plus】编程练习答案——第10章
1 // chapter10_1_account.h 2 3 #ifndef LEARN_CPP_CHAPTER10_1_ACCOUNT_H 4 #define LEARN_CPP_CHAPTER10 ...
- 【C++ Primer Plus】编程练习答案——第9章
1 // chapter09_golf.h 2 3 #ifndef LEARN_CPP_CHAPTER09_GOLF_H 4 #define LEARN_CPP_CHAPTER09_GOLF_H 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 ...
- 【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_ ...
- 【C++ Primer Plus】编程练习答案——第5章
1 void ch5_1() { 2 using namespace std; 3 int small, big, sum{0}; 4 cout << "enter small ...
- 【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 ...
- 【C++ Primer Plus】编程练习答案——第3章
1 void ch3_1() { 2 using namespace std; 3 unsigned int factor = 12; 4 unsigned int inch, feet; 5 cou ...
随机推荐
- springboot项目中进行XSS过滤
简单介绍 XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意 ...
- Java静态内部类——重点是精妙的demo
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/cd18333612683/article/details/79129503什么是内部类大部分时候,类 ...
- 关于servlet中doGet和doPost乱码再一次理解
今天系统的整理了在web项目下,出现的编码问题,下面就做一些总结: 首先对HTTP协议中对GET和POST的定义: GET POST 后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据 ...
- Go与接口:实现接口的条件
接口类型变量 Go是强类型语言,你不能将整数值赋值给浮点型变量.同样,也不能将没有实现接口的类型值赋值给接口类型变量. // 1.定义变量是接口类型 var w io.Writer // 2.将具体类 ...
- 浅谈Java和Go的程序退出
前言 今天在开发中对Java程序的退出产生了困惑,因为题主之前写过一段时间Go,这两者的程序退出逻辑是不同的,下面首先给出结论,再通过简单的例子来介绍. 对于Java程序,Main线程退出,如果当前存 ...
- SpringMVC笔记(1)
一.SpringMVC简介 1.1 MVC模型 MVC模型 MVC全名是Model View Controller,是模型(model)- 视图(view)- 控制器(controller)的缩写,是 ...
- 快速排序(C++)
快速排序 快速排序是面试中经常问到的排序算法 基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分记录继续进行排序,以达到整个序 ...
- FPGA nios通过驱动LCD12864实现菜单界面和uart串口通信
因为csdn无法插入视频,无法展示我这个实现的效果,这里我截了一些图,应该基本上也能明白了: 基本功能就是如图片所示,里面采用了菜单结构(这里编程需要一定得c语言编程技巧与数据结构知识),gpa是什么 ...
- Python之smtplib模块
工作中难免会出现自动发送电子邮件的需求,比如说做完自动化测试之后通过电子邮件的形式将结果反馈出来.Python中提供了标准库smtplib来解决这一问题,该模块定义了一个smtp客户端会话对象,能够将 ...
- MyBatis-Plus 代码生成器模板
MyBatis-Plus 代码生成器模板 maven 依赖 <!--Mysql--> <dependency> <groupId>mysql</groupId ...