Pagini recente » Cod sursa (job #2857861) | Cod sursa (job #2800520) | Cod sursa (job #860718) | Cod sursa (job #2274056) | Cod sursa (job #2168)
Cod sursa(job #2168)
#include <stdio.h>
#include <string.h>
#define NMAX 50004
char s[NMAX], o[20];
int n, poz, lenght;
void read()
{
scanf("%s\n", s);
lenght = poz = strlen(s);
scanf("%d\n", &n);
}
void B()
{
if((poz == lenght) && (poz != 0))
{
lenght = 0;
poz = 0;
}
else
{
memcpy(s+poz-1, s+poz, lenght-poz);
--lenght;
}
}
void I()
{
int i;
i = strlen(o+1);
memcpy(s+poz+i, s+poz, lenght-poz);
memcpy(s+poz, o+1, i);
lenght += i;
}
int makenumber()
{
int i = 1, number = 0;
for(; o[i] != '\0'; ++i)
number = number * 10 + (o[i]-'0');
return number;
}
void D(int i)
{
if(poz+i >= lenght)
{
i = lenght-poz;
lenght -= i;
}
else
lenght -= i;
memcpy(s+poz, s+poz+i, lenght-poz);
}
void write()
{
s[lenght] = '\0';
fputs(s, stdout);
}
int main()
{
int i = 0;
freopen("ed.in", "r", stdin);
freopen("ed.out", "w", stdout);
read();
while(i++ < n)
{
scanf("%s\n", o);
if(o[0] == 'L')
{
if(poz > 0)
--poz;
}
else if(o[0] == 'R')
{
if(poz < lenght-1)
++poz;
}
else if(o[0] == 'B')
B();
else if(o[0] == 'I')
I();
else if(o[0] == 'D')
D(makenumber());
}
write();
fclose(stdin);
fclose(stdout);
return 0;
}