C++编写计算器

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:16:38
用Microsoft Visual C++ 6.0调试
设计一个输入界面,用来输入四则运算表达式,并且自动计算结果
要求有详尽的注释
不需要图形界面,就用命令行即可
如果采用追加最高分
不需要MFC DOS界面就可以 不过要有详尽的注释
用堆栈处理的! C++语言
对于第一个,我是第一次看见有人把scanf跟cout一起用,而且没有界面,注释太过简单.
对于第二个,你是从别处转的吧,你运行结果试试,输入:3+5*(6-2) 能输出:23吗?
对于第三个 下面是运行结果
Please input the maths expression:

mexp=3+2

The token are:

numbers:3.00 2.00

signs:+
Press any key to continue

对于第四个 我不要MFC做的界面 DOS的最好

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我又加了20分的悬赏 只要能让我满意 我还可以加到最大
````````````````````````````````````````````````````

/*******************************************/
/*-----------再次强调注释和界面------------*/
/*******************************************/

//因为用int类型保存,说以不支持小数,除法小数部分截取

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
const int size_element=50;
vector<char> sign;
vector<int> number;
sign.reserve(size_element);
number.reserve(size_element);
int i=0;

do
{
scanf("%d%c",&number[i],&sign[i]);
++i;
}while(sign[i-1]!='\n'&&i!=size_element);//回车结束

vector<char> cout_sign;
vector<int> cout_number;
int j=i,size_sign=0;
cout_sign.reserve(size_element);
cout_number.reserve(size_element);
for(i=0;i!=j;++i)
{
if(sign[i]=='*')
number[i+1]=number[i]*number[i+1]; //优先计算
else if(sign[i]=='/')
{
if(number[i+1]==0) //除数不为0
return 0;
else
number[i+1]=number[i]/number[i+1];
}
else//压入队列