PTA 异常与输入输出

下面程序定义栈类模板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 (
            e
            ) {
        case OverFlow:  exit;
        case UnderFlow: exit;
        }
    }
    catch (...) {
    }
    return 0;
}

int fibonacci(int n) {

   const 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] ;
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值