天天看点

9-1

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;
}