写一个函数,以局部静态(local static)的vector储存Pentagonal数列元素。
此函数返回一个const指针,指向该vector。
如果vector的大小小于指定的元素个数,就扩充vector大小。
接下来再实现第二个函数,接受一个位置,返回该位置上的元素。
最后,编写main()测试这些函数。
#include#include using namespace std; inline bool check_validity(int pos); const vector * pentagonal_series(int pos); bool pentagonal_elem(int pos, int& elem); int main() { int elem; if (pentagonal_elem(8,elem)) { cout << "element 8 is " << elem << endl; } if (pentagonal_elem(12,elem)) { cout << "element 12 is " << elem << endl; } if (pentagonal_elem(32,elem)) { cout << "element 32 is " << elem << endl; } if (pentagonal_elem(88,elem)) { cout << "element 88 is " << elem << endl; } system("pause"); return EXIT_SUCCESS; } inline bool check_validity(int pos) { return (pos <= 0 || pos > 64) ? false : true; } const vector * pentagonal_series(int pos) { static vector _elems; if (check_validity(pos)&&(pos>_elems.size())) { for (int i = _elems.size()+1; i <= pos; i++) { _elems.push_back(i * (3 * i - 1) / 2); } } return &_elems; } bool pentagonal_elem(int pos, int &elem) { if (!check_validity(pos)) { cout << endl; cout << "Sorry!Invalid position: " << pos << endl; return false; } const vector * pent = pentagonal_series(pos); elem = (*pent)[pos - 1]; return true; }



