// ACSL Intermediate
Division Programming Contest #3
//
Tim Thomas
//
Oklahoma School of Science and Mathematics
#include
<iostream>
using
namespace std;
//char*
interpret(char string[]);
void
interpret(char string[]);
char
buffer[100];
char*
answer;
char
temp[100];
int
length;
int
main()
{
for(int z=0;z<5;z++)
{
for(int
w=0; w<100; w++)
buffer[w]=0;
cout
<< "Please enter the expression:\n";
cin
>> buffer;
int
num=strlen(buffer)-1;
while(buffer[num]!='/')
num--;
answer=buffer+num+1;
length=strlen(answer);
interpret(buffer);
cout
<< answer << endl;
}
system("PAUSE");
return 0;
}
void
interpret(char string[])
{
if(string[0]=='L')
{
if(string[1]=='S'&&string[2]=='-')
{
int
number=int(string[3]-48);
string+=5;
for(int
t=0;t<length;t++)
if(t+number<length)
answer[t]=answer[t+number];
else
answer[t]='#';
interpret(string);
}
else
if(string[1]=='C')
{
int
number=int(string[3]-48);
string+=5;
for(int
t=0;t<length;t++)
temp[t]=answer[t];
for(int
t=0;t<length;t++)
answer[t]=temp[(t+number)%length];
interpret(string);
}
}
else if(string[0]=='R')
{
if(string[1]=='S')
{
int
number=int(string[3]-48);
string+=5;
for(int
t=length-1;t>=0;t--)
if(t-number>=0)
answer[t]=answer[t-number];
else
answer[t]='#';
interpret(string);
}
else
if(string[1]=='C')
{
int
number=int(string[3]-48);
number=(length-(number%length))%length;
string+=5;
for(int
t=0;t<length;t++)
temp[t]=answer[t];
for(int
t=0;t<length;t++)
answer[t]=temp[(t+number)%length];
interpret(string);
}
else
if(string[1]=='E'&&string[2]=='V'&&string[3]=='-')
{
int
s=int(string[4]-48);
int
l=int(string[5]-48);
string+=7;
int
num=s-1+l-1;
for(int
t=0;t<length;t++)
temp[t]=answer[t];
for(int
t=s-1;t<l+s-1;t++)
{
answer[t]=temp[num];
num--;
}
interpret(string);
}
}
else
if(string[0]=='M'&&string[1]=='C')
{
int
s=int(string[3]-48);
int
l=int(string[4]-48);
int
x=int(string[5]-48);
char
d=string[6];
string+=8;
if(d=='R')
x=(l-(x%l))%l;
for(int
t=0;t<length;t++)
temp[t]=answer[t];
for(int
t=s-1;t<s-1+l;t++)
answer[t]=temp[(t+x-s+1)%l+s-1];
interpret(string);
}
}
/*
char*
interpret(char string[])
{
//cout << "interpret("
<< string << ")\n";
if(string[0]=='L')
{
if(string[1]=='S'&&string[2]=='-')
{
int
number=int(string[3]-48);
string+=5;
//cout
<< "calling interpret from LS.\n";
string=interpret(string);
//cout
<< "in LS.\n";
int
length=strlen(string);
for(int
t=0;t<length;t++)
if(t+number<length)
string[t]=string[t+number];
else
string[t]='#';
//cout
<< "returning:" << string << endl;
}
else
if(string[1]=='C')
{
}
}
else if(string[0]=='R')
{
if(string[1]=='S')
{
int
number=int(string[3]-48);
string+=5;
//cout
<< "calling interpret from RS.\n";
string=interpret(string);
//cout
<< "in RS.\n";
int
length=strlen(string);
for(int
t=length-1;t>=0;t--)
if(t-number>=0)
string[t]=string[t-number];
else
string[t]='#';
//cout
<< "returning:" << string << endl;
}
else
if(string[1]=='C')
{
}
else
if(string[1]=='E'&&string[2]=='V'&&string[3]=='-')
{
}
}
else
if(string[0]=='M'&&string[1]=='C')
{
}
return string;
}
*/