首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

前辈高手帮忙看看小弟我的程序

2013-08-01 
前辈高手帮忙看看我的程序写这段程序主要是练习异常处理和STL,程序在VC++是可以正常运行,但不知道有没有什

前辈高手帮忙看看我的程序
写这段程序主要是练习异常处理和STL,程序在VC++是可以正常运行,但不知道有没有什么不足,是否能写的更完美。


//2013.7.26
//栈的几个操作
#include <iostream>
#include <stack>

using namespace std;

int main()
{
char select[100];        
         //用于选择操作的变量,为了异常处理,选择了字符数组(处理用户输入字符串的情况)
char value;
int countNum;
stack<char> stk;      //初始化栈
while(select[0] != '5')
{
cout << "请选择您的操作:" << endl;
cout << "1.入栈    2.出栈    3.返回当前栈内元素个数" <<endl;
     cout << "4.测试栈是否非空      5.退出"   << endl;
    try
{
cin >> select;
if (select[0] < 49 || select[0] > 53 || select[1])
  //如果用户输入的是非0~6的数字或字符,或者字符串,抛出异常
throw select[100];                       //抛出异常
}
    catch(char)                                 //捕获异常
{
cout << "输入的不是1~6整数!" << endl;   //输出异常
continue;                           //若输入错误跳过执行重新输入
}
switch(select[0])
{
case '1':
cout << "输入要入栈的值" << endl;
cin >> value;
stk.push(value);
break;
case '2':
stk.pop();
break;
case '3':
countNum = stk.size();
cout << "当前栈内元素个数为"  << countNum << endl;
break;
case '4':
if(stk.empty())
cout << "栈已空" << endl;
else
cout << "栈非空" << endl;
break;
case '5':
cout << "退出bye,bye!" << endl;
break;
}
}
return;
}


[解决办法]
写得挺不错的。
[解决办法]
        try
        {
            cin >> select;
            if (select[0] < 49 
[解决办法]
 select[0] > 53 
[解决办法]
 select[1])
                  //如果用户输入的是非0~6的数字或字符,或者字符串,抛出异常
                throw select[100];                       //抛出异常
        }
        catch(char)                                 //捕获异常
        {
            cout << "输入的不是1~6整数!" << endl;   //输出异常
            continue;                           //若输入错误跳过执行重新输入
        }

49/53直接换成'1'/'6'会不会更好?
100是不是越界了?
抛出invalid_input异常是否会更清晰?

[解决办法]
前辈高手帮忙看看小弟我的程序

不错 ,代码风格挺好!
[解决办法]
尽量用 CHAR8 代替 char,
用 INT32代替int 这种数据类型.
类似这样.
好吧,最后一句程序写得不错.~

热点排行