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.