PTA(四十四)面向对象程序设计 实验六 Fill-in-Blank - P 未做

下面程序定义栈类模板StackTemplate,创建栈对象存储斐波那契数列的前10项数值,并以后进先出的方式取出元素并输出,输出结果为:55 34 21 13 8 5 3 2 1 1。其中void push(const T& i)函数为添加元素、T pop()函数为取出栈顶元素,int fibonacci(int n)函数为计算斐波那契数列的第n项值。在计算斐波那契数列值、添加元素和取出元素的过程中要进行上溢(OverFlow)或者下溢(UnderFlow)的异常处理。请补充空白处的代码(每空1分)。

#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)  
              
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(
ERROR e
 )  {
        case OverFlow:  exit;
        case UnderFlow: exit;
      }
    }
    catch(...) {
    }
   return 0;
 }

int fibonacci(int n) {
    
const int sz = 100;
  int sz = 100;
    int i;
    static int f[sz]; 
    if (n >= sz) 
        
exit
;
    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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值