G-08 魔王语言解释 (20 分)

有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没人能听的懂。但他的语言是可以逐步解释成人能懂得语言的,因为他的语言是由以下两种形式的规则由人的语言逐 步抽象上去的:

α->β1β2…βn
(θδ1δ2…δn)->θδnθδn-1…θδ1θ 在这两种形式中,从左到右均表示解释;从右到左表示抽象。试写一个魔王解释系统,把他的话解释成人能听懂得话。 [基本要求] 用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小写字 母表示人的语言词汇;希腊字母(a,b1,s,y1等)表示可以用大写或小写字母代换的变量。
魔王语言可含人的词汇。

B->tAdA
A->sae
输入格式:
输入一串带有大小写子字母的字符串其中小写字母用圆括号括起来。例如:B(einxgz)B# 。

输出格式:
根据魔王语言翻译逻辑,输出答案。例如:tsaedsaeezegexeneietsaedsae。

输入样例:
在这里给出一组输入。例如:

B(einxgz)B#
输出样例:
在这里给出相应的输出。例如:

tsaedsaeezegexeneietsaedsae

#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
using namespace std;

int main()
{
    int i,len = 0;
    int min = 0,max = 0,d;
    string str;
    getline(cin ,str);
    for(i = 0 ;str[i] != '#';i++){
        len++;
    }
    for(i = 0 ;i < len;i++){
       if(str[i] == '('){
            min = i;
          }else if(str[i] == ')'){
              max = i;
          }

    }
    for(i = 0 ;i < len;i++){
        if(str[i] == 'A'){
            cout << "sae";
        }else if(str[i] == 'B'){
            cout << "tsaedsae";
        }else if(str[i] == '('){
           cout << str[i+1];
           for(d = max - 1;d>min + 1;d--){
            cout << str[d];
            cout << str[i+1];
           }
           i = max;
        }

    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值