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 }

最新文章

  1. ov5640摄像头设备驱动
  2. android之TabHost(下)
  3. CDZSC_2015寒假新人(1)——基础 h
  4. Struts2运行机制(MVC)的分析:
  5. Android Splash界面支持用户点击 直接进入主界面
  6. redmine 出口中国的乱码
  7. 零售业山重水复,全景行柳暗花明——VR全景智慧城市
  8. 西邮linux兴趣小组2014纳新免试题(三)
  9. c语言项目流程开发三部曲
  10. 爬取西刺网代理ip,并把其存放mysql数据库
  11. PHP Lumen Call to a member function connection() on null 报错
  12. 反卷积(deconvolution)
  13. ADO.NET连接字符串大全
  14. JavaScript反向shell
  15. b1.关于em和px的关系
  16. 用户Cookie和会话Session、SessionId的关系
  17. 应用Mongoose开发MongoDB(1)数据库连接
  18. 每天一个linux命令(6):dos2unix unix2dos
  19. REST服务安全-双向认证
  20. SVN使用—常用命令及避免冲突的方法

热门文章

  1. 【springcloud】模拟RPC调用(Feign)
  2. 辗转相除 求最大公约数!or 最小公倍数
  3. 漫画CAS 的ABA 问题
  4. Mybatis映射器(二)
  5. android Handler消息通信
  6. sparksql解析流程
  7. Asp.NetCore ResposeCache 缓存的使用
  8. C++回调机制
  9. EFCore 开始
  10. python库--sklearn--流程图