Marth 发表于 2017-12-7 19:06:09

计算器

这是我写的计算器,但是这个计算器识别非法字符的部分不行,谁能帮我改进下
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
        float a,b;
        char op;
        cout<<"\n说明:此计算器仅支持数字的加减乘除运算,如果输入非法字符程序会停止运行,此时按任意键即可退出程序\n";
        for(;;)
        {
          cin>>a>>op>>b;
                if(isalpha(a)!=0)
                        cout<<" ";
                else if(isalpha(b)!=0)
                        cout<<" ";
                else
                {
                switch(op)
                        {
                        case'+':cout<<a+b<<'\n';
                                break;
                        case'-':cout<<a-b<<'\n';
                                break;
                        case'*':cout<<a*b<<'\n';
                                break;
                        case'/':
                                if(b==0)
                                        cout<<"错误,除数不能为0 \n";
                          else
                                cout<<a/b<<'\n';
                            break;
                        default:cout<<"错误! \n";
                        }
                }
        }
        return 0;
}

Marth 发表于 2017-12-7 19:07:26

输入字母什么的,直接就停止运行了,不会按我写的输出空格符。

BngThea 发表于 2017-12-7 20:58:19

你要学习一下输入流处理的相关函数,包括clear,ignore,fail等,用来判断输入流的状态,因为如果输入流有错误,那么可能和你想要的结果完全不同

Marth 发表于 2017-12-7 21:59:02

BngThea 发表于 2017-12-7 20:58
你要学习一下输入流处理的相关函数,包括clear,ignore,fail等,用来判断输入流的状态,因为如果输入流有错 ...

能不能用异常处理来分辨非法字符?

BngThea 发表于 2017-12-7 22:01:09

Marth 发表于 2017-12-7 21:59
能不能用异常处理来分辨非法字符?

可以,但是流处理你是绕不开的
页: [1]
查看完整版本: 计算器