首页 > 分享 > 1024. 分析四则运算表达式

1024. 分析四则运算表达式

最新推荐文章于 2023-01-02 11:33:25 发布

BigSnow233 于 2015-07-01 23:53:06 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

输入一个四则运算表达式(不含括号),按序输出其中的运算符和运算分量。
给出下面的基类框架
class Token
{
protected:
int NO;//编号
public:
virtual void display()=0;//打印记号
}
以Token为基类,构建Operator和Number类。
生成上述类并编写主函数,要求主函数中有一个基类Token指针数组,数组元素不超过9个。
Token *pt[9];
主函数根据输入的信息,相应建立Operator, Number类对象,对于Operator存储运算符,对于Number存储运算分量的值。
输入格式:每个测试用例占一行,相邻的运算分量(为整数)和运算符(为+、-、*、/)用一个空格分开,最后一行为A,表示输入的结束。
输出时,依次打印各个测试用例中的记号,依次输出该记号的序号,类型(NUMBER或OPERATOR)和值(对于运算分量,直接输出它的值,对于运算符,则转成英文简写,+简写为ADD,-简写为SUB, *简写为MUL, /简写为DIV)。

输入样例:
23 * 5 + 7 –2
9 + 6 / 3
A

输出样例:
1 NUMBER 23
2 OPERATOR MUL
3 NUMBER 5
4 OPERATOR ADD
5 NUMBER 7
6 OPERATOR SUB
7 NUMBER 2
1 NUMBER 9
2 OPERATOR ADD
3 NUMBER 6
4 OPERATOR DIV
5 NUMBER 3

来源

多态


#include<iostream>

#include<string.h>

using namespace std;

class Token

{

protected:

int NO;

public:

Token(int n):NO(n){

}

virtual void display()=0;

virtual~Token(){delete this;

}

};

class Operator:public Token

{

string p;

public:

Operator(int n,string p):Token(n),p(p){

}

virtual void display(){

cout<<NO<<" OPERATOR ";

if(p=="*")cout<<"MUL"<<endl;

if(p=="/")cout<<"DIV"<<endl;

if(p=="+")cout<<"ADD"<<endl;

if(p=="-")cout<<"SUB"<<endl;

}

~Operator(){delete this;

}

};

class Number:public Token

{

string num;

public:

Number(int n,string num):Token(n),num(num){

}

virtual void display(){

cout<<NO<<" NUMBER "<<num<<endl;

}

~Number(){delete this;

}

};

int main()

{

Token*pt[9];

string temp;

char end;

int i,j,k;

cin>>temp;

i=0;

while(temp!="A")

{

if(i%2==0)

pt[i]=new Number(i+1,temp);

else

pt[i]=new Operator(i+1,temp);

i++;

end=getchar();

if(end=='n')

j=i,i=0;

if(i==0)

{

for(i=0;i<j;i++)

pt[i]->display();

i=0;

}

cin>>temp;

}

}

相关知识

1024. 分析四则运算表达式
写出下列表达式的值,设 a=3 , b=4 , c=5 : 表达式 值 a+b&
检索表达式:主题:(宠物)*作者单位:(中国农业大学)*Date:
设有定义语句:int a=12;,则表达式a*=2+3的运算结果是
初中数学计算一定要写解:原式= 吗
如何用access计算四张扑克牌得出24点的概率
c语言中逗号运算符的作用
【如图,已知抛物线y=x2+bx+c与x轴交于A、B两点(A点在B点左侧),与y轴交于点C(0,
精彩不要停:优秀学生作品评选活动公告(第二、三批)
Python笔试题

网址: 1024. 分析四则运算表达式 https://m.mcbbbk.com/newsview161032.html

所属分类:萌宠日常
上一篇: 场景化×颠覆性创新=全光网新时代
下一篇: 合理饲喂狗狗的十大准则