Program
Strings;
{
Ashwin Srikrishna
February 27, 2006
Enloe HS JR-5
ACSL 3
}
Uses
CRT;
Type
funcs = (LS,RS,LC,RC,MC);
Var
userinput : string;
substring : string;
answerstring : string;
funcnums : integer;
int : integer;
func : funcs;
int3 : integer;
readchar : integer;
Procedure
StringFunctions(func : funcs; var answerstring : string ; substring : string);
Var
ansstr : string;
substr : string;
int : integer;
int2 : integer;
direction : char;
errorcheck : integer;
str : string;
str2 : string;
str3 : string;
MCSLXD : Array[1..3] of Integer;
Begin
str := '';
ansstr := answerstring;
substr := substring;
int := 0;
If (func <> MC) Then
Begin
For int2 := 4 To length(substring)
Do
Begin
str :=
concat(str,substring[int2]);
End;
Val(str,int,errorcheck);
If (func = LS) Then
Begin
ansstr := '';
For int2 := int + 1 To
length(answerstring) Do
Begin
ansstr :=
concat(ansstr,answerstring[int2]);
End;
For int2 := 1 To int Do
Begin
ansstr :=
concat(ansstr,'#');
End;
answerstring := ansstr;
End
Else If (func = RS) Then
Begin
ansstr := '';
For int2 := 1 To
length(answerstring) - int Do
Begin
ansstr := concat(ansstr,answerstring[int2]);
End;
For int2 := 1 To int Do
Begin
ansstr :=
concat('#',ansstr);
End;
answerstring := ansstr;
End
Else If (func = LC) Then
Begin
ansstr := '';
str := '';
For int2 := 1 To int Do
Begin
ansstr :=
concat(ansstr,answerstring[int2]);
End;
For int2 := int + 1 To length(answerstring) Do
Begin
str :=
concat(str,answerstring[int2]);
End;
answerstring :=
concat(str,ansstr);
End
Else If (func = RC) Then
Begin
ansstr := '';
str := '';
For int2 :=
length(answerstring) - int + 1 To length(answerstring) Do
Begin
ansstr :=
concat(ansstr,answerstring[int2]);
End;
For int2 := 1 To
length(answerstring) - int Do
Begin
str :=
concat(str,answerstring[int2]);
End;
answerstring :=
concat(ansstr,str);
End;
End
Else
Begin
ansstr := '';
str := '';
substr := '';
For int2 := 4 To 6 Do
Begin
val(substring[int2],MCSLXD[int2-3],errorcheck);
End;
direction := substring[7];
For int2 := 1 To MCSLXD[1] - 1 Do
Begin
str :=
concat(str,answerstring[int2]);
End;
For int2 := MCSLXD[1] To MCSLXD[1] +
MCSLXD[2] - 1 Do
Begin
ansstr :=
concat(ansstr,answerstring[int2]);
End;
For int2 := MCSLXD[1] + MCSLXD[2] To
length(answerstring) Do
Begin
substr :=
concat(substr,answerstring[int2]);
End;
If (direction = 'L') Then
Begin
str2 := ansstr;
str3 := '';
ansstr := '';
For int2 := 1 To MCSLXD[3] Do
Begin
ansstr :=
concat(ansstr,str2[int2]);
End;
For int2 := MCSLXD[3] + 1 To
MCSLXD[2] Do
Begin
str3 :=
concat(str3,str2[int2]);
End;
ansstr := concat(str3,ansstr);
End
Else If (direction = 'R') Then
Begin
str2 := ansstr;
str3 := '';
ansstr := '';
For int2 := length(str2) -
MCSLXD[3] + 1 To length(str2) Do
Begin
ansstr :=
concat(ansstr,str2[int2]);
End;
For int2 := 1 To length(str2) -
MCSLXD[3] Do
Begin
str3 :=
concat(str3,str2[int2]);
End;
ansstr := concat(ansstr,str3);
End;
answerstring := concat(str,ansstr,substr);
End;
End;
BEGIN
For int3 := 1 To 5 Do
Begin
clrscr;
funcnums := 0;
substring := '';
writeln('Type in thy string');
readln(userinput);
For int := 1 To length(userinput) Do
Begin
substring :=
concat(substring,userinput[int]);
If (userinput[int] = '/') Then
Begin
funcnums := funcnums + 1;
substring := '';
End;
End;
answerstring := substring;
readchar := 1;
For int := 1 To funcnums Do
Begin
substring := '';
Repeat
substring := Concat(substring,userinput[readchar]);
readchar := readchar + 1;
Until userinput[readchar] =
'-';
If (substring = 'LS') Then
func := LS
Else If (substring = 'RS') Then
func := RS
Else If (substring = 'RC') Then
func := RC
Else If (substring = 'LC') Then
func := LC
Else
func := MC;
Repeat
substring :=
Concat(substring,userinput[readchar]);
readchar := readchar + 1;
Until userinput[readchar] =
'/';
readchar := readchar + 1;
StringFunctions(func,answerstring,substring);
End;
writeln(answerstring);
readln;
End;
{a s h w n
}
END.