Bjarne Stroustrup “Programming Principles and Practice Using C++”
Chapter 4 Exercise 6
Using std_lib_facilities.h by Bjarne Stroustrup.
[code language=”cpp”]
// Philipp Siedler
// Bjarne Stroustrup’s PP
// Chapter 4 Exercise 6
#include "std_lib_facilities.h"
vector<string> numbers;
void initNumbers(){
numbers.push_back("zero");
numbers.push_back("one");
numbers.push_back("two");
numbers.push_back("three");
numbers.push_back("four");
numbers.push_back("five");
numbers.push_back("six");
numbers.push_back("seven");
numbers.push_back("eight");
numbers.push_back("nine");
}
void getNum() {
int vali = numbers.size();
string vals;
// getInt
if (cin >> vali) {
if (vali <= 10) {
cout << numbers[vali] << "\n";
return;
}
else {
error("Entered integer is too high. You entered: ", vali);
}
}
cin.clear();
// getString
string s = "noNumber";
cin >> vals;
for (int i = 0; i < numbers.size(); i++) {
if (numbers[i] == vals) {
cout << i << "\n";
s = vals;
}
}
if(s == "noNumber") {
error("Illegal entered number. You entered: \n", vals);
}
}
int main()
try
{
initNumbers();
cout << "Please enter a number as integer between 0 and 9 or string as ‘zero’ to ‘nine’\n";
while (cin){
getNum();
}
keep_window_open(".");
}
catch (runtime_error e) {
cout << e.what() << ‘\n’;
keep_window_open(".");
}
catch (…) {
cout << "exiting\n";
keep_window_open(".");
}
[/code]
Output: Please enter a number as integer between 0 and 9 or string as 'zero' to 'nine' one 1 two 2 three 3 4 four 5 five 6 six