完善:#include <iostream> using namespace std; enum ERROR{UnderFlow,OverFlow}; template<typename T> class StackTemplate { enum { ssize = 100 }; T stack[ssize]; int top; public: StackTemplate() : top(0) {} void push(const T& i) { if (top >= ssize) ; stack[top++] = i; } T pop() { if ( ) throw UnderFlow; return ; } int size() const{ return top; } }; int fibonacci(int n); int main() { { is; for(int i = 0; i < 10; i++) is.push(fibonacci(i)); for(int k = 0; k < 10; k++) cout << is.pop() << "\t"; } catch( ERROR e ) { switch( ) { case OverFlow: exit; case UnderFlow: exit; } } catch(...) { } return 0; } int fibonacci(int n) { int sz = 100; int i; static int f[sz]; if (n >= sz) ; f[0] = f[1] = 1; for(i = 0; i < sz; i++) if(f[i] == 0) break; while(i <= n) { = f[i-1] + f[i-2]; i++; } return ; }
时间: 2024-02-14 07:22:51 浏览: 97
#include_iostream.h_
4星 · 用户满意度95%
完善后的代码如下:
#include <iostream>
#include <cstdlib>
using namespace std;
enum ERROR{UnderFlow, OverFlow};
template<typename T>
class StackTemplate {
enum {ssize = 100};
T stack[ssize];
int top;
public:
StackTemplate() : top(0) {}
void push(const T& i) {
if (top >= ssize)
throw OverFlow;
stack[top++] = i;
}
T pop() {
if (top <= 0)
throw UnderFlow;
return stack[--top];
}
int size() const {
return top;
}
};
int fibonacci(int n);
int main() {
try {
StackTemplate<int> is;
for(int i = 0; i < 10; i++)
is.push(fibonacci(i));
for(int k = 0; k < 10; k++)
cout << is.pop() << "\t";
} catch(ERROR e) {
switch(e) {
case OverFlow:
cout << "Stack overflow." << endl;
break;
case UnderFlow:
cout << "Stack underflow." << endl;
break;
}
} catch(...) {
cout << "An exception has occurred." << endl;
}
return 0;
}
int fibonacci(int n) {
int sz = 100;
int i;
static int f[sz];
if (n >= sz)
exit(1);
f[0] = f[1] = 1;
for(i = 0; i < sz; i++)
if(f[i] == 0)
break;
while(i <= n) {
f[i] = f[i-1] + f[i-2];
i++;
}
return f[n];
}
注:完善的内容主要包括:1) 定义 StackTemplate 类时没有指定类型 T,需要在 main 函数中明确指定;2) 在 push 和 pop 函数中添加异常处理代码;3) 在 main 函数中添加异常处理代码,以处理 StackTemplate 类中的异常;4) 在 fibonacci 函数中添加一个异常处理代码,以处理 n 超出 f 数组大小的异常。
阅读全文