天天看點

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