将练习2.2的Pentagonal数列求值函数拆分为两个函数,其中之一为inline,用来检验元素个数是否合理。如果合理而且尚未被计算,便执行第二个函数,执行实际求值工作。
#include#include using namespace std; inline bool calc_elems(vector & vec, int pos); void really_calc_elems(vector & vec, int pos); void display_elems(vector & vec, const string& title); int main() { vector pent; const string title("Pentagonal Numeric Series"); if (calc_elems(pent, 0)) { display_elems(pent, title); } if (calc_elems(pent, 8)) { display_elems(pent, title); } if (calc_elems(pent, 14)) { display_elems(pent, title); } if (calc_elems(pent, 128)) { display_elems(pent, title); } system("pause"); return EXIT_SUCCESS; } inline bool calc_elems(vector & vec, int pos) { if (pos<=0||pos>64) { cout << endl; cerr << "Sorry! Invalid position: " << pos << endl; return false; } if (vec.size() & vec, int pos) { for (unsigned i = vec.size() + 1; i <= pos; i++) { vec.push_back(i * (3 * i - 1) / 2); } } void display_elems(vector & vec, const string& title) { cout << endl << title << endl; for (unsigned i = 0; i < vec.size(); i++) { cout << vec[i] << " "; } cout << endl; }



