1 double ch7_1_harmonicaverage(double a, double b) {
2 return 2 / (1 / a + 1 / b);
3 }
4
5 void ch7_1() {
6 using namespace std;
7 double a{0}, b{0};
8 while (true) {
9 cout << "a: ";
10 cin >> a;
11 cout << "b: ";
12 cin >> b;
13 if (!(a&&b))
14 break;
15 cout << "harmonic average: " << ch7_1_harmonicaverage(a, b) << endl;
16 }
17 }
18
19 void ch7_2_in(double * arr, int & len, int max) {
20 using namespace std;
21 for (int i = 0; i < max; ++ i)
22 if (!(cin >> arr[i])) {
23 len = i;
24 break;
25 }
26 len = max;
27 }
28
29 void ch7_2_show(const double * arr, int len) {
30 using namespace std;
31 for (int i = 0; i < len; ++ i)
32 cout << arr[i] << " ";
33 cout << endl;
34 }
35
36 double ch7_2_mean(const double * arr, int len) {
37 double sum{0};
38 for (int i = 0; i < len; ++ i)
39 sum += arr[i];
40 return sum / len;
41 }
42
43 void ch7_2() {
44 using namespace std;
45 const int ArSize = 10;
46 double scores[ArSize]{0};
47 int len{0};
48 cout << "enter scores (max 10, nan to quit)" << endl;
49 ch7_2_in(scores, len, ArSize);
50 cout << "scores: ";
51 ch7_2_show(scores, len);
52 cout << "mean: " << ch7_2_mean(scores, len) << endl;
53 }
54
55 void ch7_3_show(box b) {
56 using namespace std;
57 cout << "box: maker: " << b.maker << " height: " << b.height
58 << " width: " << b.width << " length: " << b.length
59 << " volume: " << b.volume << endl;
60 }
61
62 void ch7_3_setvolume(box * b) {
63 using namespace std;
64 b -> volume = b -> height * b -> width * b -> length;
65 cout << "box volume seted" << endl;
66 }
67
68 void ch7_3() {
69 using namespace std;
70 box b{"xushun", 2, 3, 4};
71 ch7_3_show(b);
72 ch7_3_setvolume(&b);
73 ch7_3_show(b);
74 }
75
76 long double ch7_4_probability(unsigned int numbers, unsigned int picks) {
77 long double result = 1.0;
78 for (int i = numbers, j = picks; j; -- i, -- j)
79 result = result * i /j;
80 return 1 / result;
81 }
82
83 void ch7_4() {
84 using namespace std;
85 long double r = ch7_4_probability(47, 5) * ch7_4_probability(27, 1);
86 cout << "r = " << r << endl;
87 }
88
89 unsigned long long ch7_5_factorial(unsigned long long num) {
90 if (num == 0)
91 return 1;
92 else
93 return num * ch7_5_factorial(num - 1);
94 }
95
96 void ch7_5() {
97 using namespace std;
98 unsigned long long num{0};
99 cout << "enter num to get factorial (nan to quit)" << endl;
100 while (true) {
101 cout << "num: ";
102 if (!(cin >> num))
103 break;
104 cout << "factorial: " << ch7_5_factorial(num) << endl;
105 }
106 }
107
108 unsigned int ch7_6_fillarray(double * arr, unsigned int max) {
109 using namespace std;
110 int i{0};
111 for (i = 0; i < max; ++ i) {
112 cout << "#" << i << ": ";
113 if (!(cin >> arr[i]))
114 break;
115 }
116 return i;
117 }
118
119 void ch7_6_showarray(const double * arr, unsigned int len) {
120 using namespace std;
121 cout << "array: ";
122 for (int i = 0; i < len; ++ i)
123 cout << arr[i] << " ";
124 cout << endl;
125 }
126
127 void ch7_6_reversearray(double * arr, unsigned int len) {
128 double temp{0};
129 for (int i = 0; i < len / 2; ++ i) {
130 temp = arr[i];
131 arr[i] = arr[len - i - 1];
132 arr[len - i - 1] = temp;
133 }
134 }
135
136 void ch7_6() {
137 using namespace std;
138 const unsigned int max = 100;
139 double arr[max]{0};
140 unsigned int len{0};
141 cout << "enter array (nan to quit)" << endl;
142 len = ch7_6_fillarray(arr, max);
143 cout << "array" << endl;
144 ch7_6_showarray(arr, len);
145 cout << "reverse array" << endl;
146 ch7_6_reversearray(arr, len);
147 ch7_6_showarray(arr, len);
148 cout << "reverse array except 1 and len" << endl;
149 ch7_6_reversearray(arr + 1, len - 2);
150 ch7_6_showarray(arr, len);
151 }
152
153 double * ch7_7_fillarray(double * arr, unsigned int max) {
154 using namespace std;
155 for (int i = 0; i < max; ++ i) {
156 cout << "#" << i << ": ";
157 if (!(cin >> arr[i]))
158 return arr + i;
159 }
160 return arr + max - 1;
161 }
162
163 void ch7_7_showarray(const double * arr, double * end) {
164 using namespace std;
165 cout << "array: ";
166 while (arr != end) {
167 cout << *arr << " ";
168 ++ arr;
169 }
170 cout << endl;
171 }
172
173 void ch7_7_revalue(double * arr, double * end, double factor) {
174 while (arr != end) {
175 *arr *= factor;
176 ++ arr;
177 }
178 }
179
180 void ch7_7() {
181 using namespace std;
182 const unsigned int max = 100;
183 double arr[100]{0};
184 double * end = arr;
185 double factor{1};
186 cout << "enter array (nan to quit)" << endl;
187 end = ch7_7_fillarray(arr, max);
188 cout << "array" << endl;
189 ch7_7_showarray(arr, end);
190 cout << "enter factor: ";
191 cin.clear();cin.get();
192 while (!(cin >> factor)) {
193 cin.clear();
194 while (cin.get() != "
")
195 continue;
196 cout << "factor must be a number: ";
197 }
198 ch7_7_revalue(arr, end ,factor);
199 ch7_7_showarray(arr, end);
200 }
201
202 void ch7_8_fill(double * arr, unsigned int n) {
203 using namespace std;
204 cout << "enter expenses for 4 seasons" << endl;
205 for (int i = 0; i < n; ++ i) {
206 while (!(cin >> arr[i])) {
207 cin.clear();
208 while (cin.get() != "
")
209 continue;
210 cout << "must number: ";
211 }
212 }
213 }
214
215 void ch7_8_show(const double * arr, unsigned int n) {
216 using namespace std;
217 for (int i = 0; i < n; ++ i)
218 cout << arr[i] << " ";
219 cout << endl;
220 }
221
222 void ch7_8() {
223 using namespace std;
224 const unsigned int snum = 4;
225 const char * SEASONSNAME[] = {"Spring", "Summer", "Fall", "Winter"};
226 double expenses[snum]{0};
227 ch7_8_fill(expenses, snum);
228 ch7_8_show(expenses, snum);
229 }
230
231 void ch7_9() {
232 using namespace std;
233 // 题目太长不看 o.o
234 }
235
236 double ch7_10_calculate(double x, double y, double (* pf)(double, double)) {
237 return pf(x, y);
238 }
239
240 double ch7_10_add(double x, double y) {
241 return x + y;
242 }
243
244 double ch7_10_mul(double x, double y) {
245 return x * y;
246 }
247
248 void ch7_10() {
249 using namespace std;
250 double x{0}, y{0};
251 cout << "enter two double" << endl;
252 cout << "x: ";
253 while (!(cin >> x)) {
254 cin.clear();
255 while (cin.get() != "
")
256 continue;
257 cout << "must a double: ";
258 }
259 cout << "y: ";
260 while (!(cin >> y)) {
261 cin.clear();
262 while (cin.get() != "
")
263 continue;
264 cout << "must a double: ";
265 }
266 cout << "x + y == " << ch7_10_calculate(x, y, ch7_10_add) << endl;
267 cout << "x * y == " << ch7_10_calculate(x, y, ch7_10_mul) << endl;
268 }
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 »
——第7章