#include #include #include #include using namespace std; struct hurricane { string name; int windspeed; }; int category(const hurricane *p); int main() { string name_in; int windspeed_in; // get hurricane name from user cout << "Enter a hurricane name: "; cin >> name_in; // get hurricane windspeed from user while (true) { cout << "Enter the hurricane's windspeed (in mph) as an integer: "; cin >> windspeed_in; if (cin.fail()) { cin.clear(); // clear fail state cin.ignore(numeric_limits::max(), '\n'); // erase input buffer cout << "Invalid input. Please try again." << endl; } else if (windspeed_in >= 74) break; else cout << "Windspeed must be an integer greater than or equal to 74." << endl; } hurricane h {name_in, windspeed_in}; // output hurricane's Saffir-Simpson category cout << name_in << " is a category " << category(&h) << " hurricane on the Saffir-Simpson scale." << endl; return EXIT_SUCCESS; } /* int category(const hurricane *p) { // calculates the category of the hurricane (assumes wind is >= 74) int windspeed = p->windspeed; int cat; if (p->windspeed < 74) cout << p->name; else if ((p->windspeed >= 74) && (p->windspeed <= 95)) cat = 1; else if ((p->windspeed >= 96) && (p->windspeed <= 110)) cat = 2; else if ((p->windspeed >= 111) && (p->windspeed <= 129)) cat = 3; else if ((p->windspeed >= 130) && (p->windspeed <= 156)) cat = 4; else if (p->windspeed > 156) cat = 5; return cat; } */ //Calculate the category of the hurricane. //Return 0 if windspeed is less than 74. int category(const hurricane *p) { const int a[] { 73, //category 0 95, //category 1 110, //category 2 129, //category 3 156 //category 4 }; const size_t n {size(a)}; //the number of elements in the array for (int cat {0}; cat < n; ++cat) { if (p->windspeed <= a[cat]) { return cat; } } return n; //Arrive here if p->windspeed greater than categories in array }