9-1
(3/3 分数) 题目描述
从命令行读入若干指令,执行相应计算。
指令 格式 意义
SET SET x 设置运算结果为x
ADD ADD x 运算结果+x
SUB SUB x 运算结果-x
MUL MUL x 运算结果*x
DIV DIV x 运算结果/x
OUT OUT 输出运算结果并换行,结果保留2位小数
上述指令的参数x都为浮点数,且保证不会除以0。
输入格式
第一行为测试样例个数n,后面接n行测试数据,每一行包含若干指令,指令间空格隔开
输出格式
输出结果并换行,保留两位小数
样例输入
2
SET 2.5 MUL 2 SUB 1 OUT
SET 3 DIV 3 OUT
样例输出
4.00
1.00
代码框
#include <iostream>
#include <vector>
#include <iomanip>
#include <cstring>
using namespace std;
const int M=100;
const int N=100;
int main(){
int n;
cin>>n;
vector<double>a(n);
vector<string>b(6);
b[0]="SET";
b[1]="ADD";
b[2]="SUB";
b[3]="MUL";
b[4]="DIV";
b[5]="OUT";
for(int i=0;i<n;i++){
vector<double>number(M);
vector<string>instruction(N);
int j=0;
cin>>instruction[0];
if(instruction[0]!=b[0]) return false;
while(instruction[j]!=b[5]){
j++;
cin>>number[j]>>instruction[j];
}
int k=0;
a[i]=number[1];
while(instruction[k]!=b[5]){
k++;
if(instruction[k]==b[1]) a[i]=a[i]+number[k+1];
else if(instruction[k]==b[2]) a[i]=a[i]-number[k+1];
else if(instruction[k]==b[3]) a[i]=a[i]*number[k+1];
else if(instruction[k]==b[4]) a[i]=a[i]/number[k+1];
}
}
for(int i=0;i<n;i++)
cout << fixed << setprecision(2)<<a[i]<<endl;
}