コンピュータシミュレーション(hd 1283)

5764 ワード

最も簡単なコンピュータ
Problem Description
PigHeadThreeという研究組織がPpMmという実験用のコンピュータを設計した.PpMmは簡単な6種類の命令A,B,C,D,E,Fしか実行できない.メモリM 1,M 2は2つしかありません.3つのレジスタR 1,R 2,R 3.6つのコマンドの意味は次のとおりです.
命令A:メモリM 1のデータをレジスタR 1に入れる.
命令B:メモリM 2のデータをレジスタR 2に入れる.
コマンドC:レジスタR 3のデータをメモリM 1に入れる.
コマンドD:レジスタR 3のデータをメモリM 2に入れる.
コマンドE:レジスタR 1のデータとレジスタR 2のデータを加算し、レジスタR 3に格納する.
コマンドF:レジスタR 1のデータとレジスタR 2のデータとを減算し、レジスタR 3に格納する.
あなたの任務は、PpMmの実行をシミュレートするプログラムを設計することです.
 
 
Input
いくつかのグループがあり、各グループは2行あり、第1行は2つの整数で、それぞれM 1とM 2の初期内容を表す.2行目は、上述したように、大文字A〜Fからなる命令列の長さが200を超えない列である.
 
 
Output
各グループの入力に対応して、出力は1行、2つの整数だけで、それぞれM 1、M 2の内容を表す.ここで、M 1とM 2の間はカンマで区切られている.
その他の説明:R 1,R 2,R 3の初期値は0であり、すべての中間結果は-2^31と2^31の間にある.
 
 
Sample Input
100 288
ABECED
876356 321456
ABECAEDBECAF
 
Sample Output
388,388
2717080,1519268
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 int main()
 6 {
 7     int M1,M2;
 8     while(cin>>M1>>M2)
 9     {
10         int i;
11         int R1=0,R2=0,R3=0;
12         getchar();
13         char a[201];
14         gets(a);
15         for(i=0;a[i]!='\0';i++)
16         {
17             if(a[i]=='A')
18                 R1=M1;
19             if(a[i]=='B')
20                 R2=M2;
21             if(a[i]=='C')
22                 M1=R3;
23             if(a[i]=='D')
24                 M2=R3;
25             if(a[i]=='E')
26                 R3=R1+R2;
27             if(a[i]=='F')
28                 R3=R1-R2;
29         }
30         cout<<M1<<','<<M2<<endl;
31     }
32 }