📄 mowang.cpp
字号:
#include<iostream>
#include<string>
using namespace std;
struct Tom
{
char data[100];
char * top;
//char A;
//int An;//记录A中字的长度
//char B;
};
void InitTOM(Tom * a)//初始化栈
{
int i(0);
for(i=0;i<=99;i++)
{
a->data[i]='\0';
}
/*a->A='\0';
a->An =0;
a->B ='\0';*/
a->top = a->data;
}
void Push(char c, Tom * a)//压栈
{
if(a->top == a->data +100)
return;
*(a->top)=c;
a->top++;
}
void Din(string &A,string &B,int &An,int &Bn)//记录A B的表示方法
{
cout<<"请输入A的密文的长度:";
cin>>An;
cout<<"请输入A的密文内容:";
cin>>A;
cout<<"请输入B的密文长度:";
cin>>Bn;
cout<<"请输入B的密文内容:";
cin>>B;
}
char Pop(Tom *a)
{
char c;
if(a->top==a->data)
return '\0';
(a->top)--;
c=*(a->top);
*(a->top)='\0';
return c;
}
string AtoB(string B,string A,int Bn)//当输入B的时候进入函数
{
int i=0;
int j=0;
string str;
while(B[i]!='\0' && i<=Bn)
{
if(B[i] == 'A')
{
str +=A;;
}
else
{
str +=B[i];
}
i++;
}
return str;
}
void Inputchar(char a,string &_n)
{
_n=_n+a;
}
void OutPut(string s)
{
int i=0;
char a;
while(s[i]!='\0')
{
a=s[i];
switch(a)
{
case 't':cout<<"天";
break;
case 'd':cout<<"地";
break;
case 's':cout<<"上";
break;
case 'a':cout<<"一只";
break;
case 'e':cout<<"鹅";
break;
case 'z':cout<<"追";
break;
case 'g':cout<<"赶";
break;
case 'x':cout<<"下";
break;
case 'n':cout<<"蛋";
break;
case 'h':cout<<"恨";
break;
}
i++;
}
}
int main()
{
string Lin;
string A,B;
int An=0,Bn=0;
Din(A,B,An,Bn);//初始化魔王密文
Tom *a =new Tom();
InitTOM(a);
string slen;
int num=0;//记录总共几个字符
cout<<"输入魔王语言:";
cin>>slen;
//char *p ;
int i =0;
char first;//记录第一个@
bool f=false;
int k=0;//记录是否是第一次压栈
while(slen[i]!='\0')
{
if(slen[i]=='(')
{
f=true;
k=1;
i++;
continue;
}
else if(slen[i]==')')
{
f=false;
for(int n=1;n<=k-1;n++)
{
if(n==k-1)
{
Inputchar(Pop(a),Lin);
}
else
{
Inputchar(first,Lin);
Inputchar(Pop(a),Lin);
}
}
k=0;
first='\0';
i++;
continue;
}
if(f==true)
{
if(k==1)
{
first=slen[i];
}
Push(slen[i],a);
k++;//即K-1就是栈中的元素个数
}
else
{
if(slen[i]=='A')
{
int y=0;
while(A[y]!='\0')
{
Inputchar(slen[i],Lin);
y++;
}
}
else if(slen[i]=='B')
{
string str;
int g=0;
str=AtoB(B,A,Bn);
while(str[g]!='\0')
{
Inputchar(str[g],Lin);
g++;
}
}
else
{
Inputchar(slen[i],Lin);
}
}
num++;
i++;
}
OutPut(Lin);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -