-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathch-4-drill-10-11.cpp
91 lines (70 loc) · 1.89 KB
/
ch-4-drill-10-11.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
int main() {
double smallest = numeric_limits<double>::quiet_NaN(), largest = numeric_limits<double>::quiet_NaN();
double cm;
string unit;
int num_entered = 0;
double sum = 0;
vector<double> values;
while(true) {
cout << "\nEnter a number with a unit: ";
if (!(cin >> cm >> unit)) {
cin.clear();
char invalid_char;
cin >> invalid_char;
if (invalid_char == '|') {
cout << "Values entered: ";
sort(values.begin(), values.end());
for (int i = 0; i < values.size(); i++) {
cout << values[i] << " ";
}
cout << "\n\nLARGEST: " << largest << " SMALLEST: " << smallest << " COUNT: " << num_entered << " SUM: " << sum << '\n';
return 0;
}
cin.ignore(numeric_limits<streamsize>::max(), '\n');
continue;
}
++num_entered;
if (unit == "m") {
cm = cm * 100;
} else if (unit == "in") {
cm = cm * 2.54;
} else if (unit == "ft") {
cm = cm * 12;
} else if (unit != "cm") {
continue;
}
sum += cm / 100;
values.push_back(cm / 100);
string suffix = "";
if (isnan(smallest)) {
smallest = cm;
suffix = "smallest so far.";
} else if (isnan(largest)) {
if (cm < smallest) {
largest = smallest;
smallest = cm;
suffix = "smallest so far.";
} else {
largest = cm;
suffix = "largest so far.";
}
} else if (cm < smallest) {
smallest = cm;
suffix = "smallest so far.";
} else if (cm > largest) {
largest = cm;
suffix = "largest so far.";
}
cout << "\nSMALLEST: " << smallest << " LARGEST: " << largest << '\n';
if (suffix != "") {
cout << '\n' << cm << " is the " << suffix << '\n';
}
}
return 0;
}