{Pranay Orugunta

1/25/11

Enloe HS

Lyerly

Contest 2

Jr 5}

uses crt;

type

    a=array[1..5] of string;

    d=array[1..10] of string;

var

    b,c:a;

    e:d;

    f:string;

    g,h,i,j,count,counter,count2,count3,count4:integer;

begin

      clrscr;

    writeln('Please input the 10 strings with commas');

    readln(f);

    count:=0;

    repeat

        count:=count+1;

      g:=pos(',',f);

        e[count]:=copy(f,1,g-1);

        Delete(f,1,g);

    until (count>10) or (g=0);

    e[count]:=f;

    for count:=1 to 5 do

    begin

      writeln('Please enter substring ',count);

        readln(b[count]);

    end;

    writeln;

    for counter:=1 to 5 do

    begin

         h:=0;

         i:=0;

         count4:=0;

         for count:=1 to 10 do

         begin

              j:=0;

              g:=pos(b[counter],e[count]);

              h:=h+g;

              if g<>0 then

              begin

                   if count4<>0 then

                   begin

                        write(',');

                   end;

                   write(e[count]);

                   count4:=count4+1;

              end;

              if (b[counter][length(b[counter])]='*') and (b[counter][1]<>'?') then

              begin

                   Delete(b[counter],length(b[counter]),1);

                   g:=pos(b[counter],e[count]);

                   h:=h+g;

                   if g<>0 then

                   begin

                        for count2:=1 to length(b[counter]) do

                        begin

                             if (b[counter][count2])=(e[count][count2]) then

                             begin

                                  j:=j+1;

                             end;

                        end;

                        if j=length(b[counter]) then

                        begin

                             if count4<>0 then

                             begin

                                  write(',');

                             end;

                             write(e[count]);

                             count4:=count4+1;

                        end;

                   end;

                   Insert('*',b[counter],length(b[counter])+1);

              end;

              if (b[counter][length(b[counter])]='?') and (b[counter][1]<>'*') then

              begin

                   if length(b[counter])=length(e[count]) then

                   begin

                   Delete(b[counter],length(b[counter]),1);

                   g:=pos(b[counter],e[count]);

                   h:=h+g;

                   if g<>0 then

                   begin

                        for count2:=1 to length(b[counter]) do

                        begin

                             if (b[counter][count2])=(e[count][count2]) then

                             begin

                                  j:=j+1;

                             end;

                        end;

                        if j=length(b[counter]) then

                        begin

                             if count4<>0 then

                             begin

                                  write(',');

                             end;

                             write(e[count]);

                             count4:=count4+1;

                        end;

                   end;

                   Insert('?',b[counter],length(b[counter])+1);

                   end;

              end;

              if (b[counter][1]='*') and (b[counter][length(b[counter])]<>'?') then

              begin

                   Delete(b[counter],1,1);

                   g:=pos(b[counter],e[count]);

                   h:=h+g;

                   if g<>0 then

                   begin

                        for count2:=1 to length(b[counter]) do

                        begin

                             if b[counter][length(b[counter])-count2+1]=(e[count][length(e[count])-count2+1]) then

                             begin

                                  j:=j+1;

                             end;

                        end;

                        if j=length(b[counter]) then

                        begin

                             if count4<>0 then

                             begin

                                  write(',');

                             end;

                             write(e[count]);

                             count4:=count4+1;

                        end;

                   end;

                   Insert('*',b[counter],0);

              end;

              if (b[counter][1]='?') and (b[counter][length(b[counter])]<>'*') then

              begin

                   if length(b[counter])=length(e[count]) then

                   begin

                   Delete(b[counter],1,1);

                   g:=pos(b[counter],e[count]);

                   h:=h+g;

                   if g<> 0 then

                   begin

                        for count2:=1 to length(b[counter]) do

                        begin

                             if b[counter][length(b[counter])-count2+1]=(e[count][length(e[count])-count2+1]) then

                             begin

                                  j:=j+1;

                             end;

                        end;

                        if j=length(b[counter]) then

                        begin

                             if count4<>0 then

                             begin

                                  write(',');

                             end;

                             write(e[count]);

                             count4:=count4+1;

                        end;

                   end;

                   Insert('?',b[counter],1);

                   end;

              end;

              if (b[counter][1]<>'*') or (b[counter][length(b[counter])]<>'*') then

              begin

                   if (pos('?',b[counter])>1) and (pos('?',b[counter])<>length(b[counter])) then

                   begin

                        if  length(b[counter])=length(e[count]) then

                        begin

                          count2:=pos('?',b[counter]);

                          b[counter][count2]:=e[count][count2];

                          g:=pos(b[counter],e[count]);

                          h:=h+g;

                          if g<>0 then

                          begin

                               if count4<>0 then

                               begin

                                    write(',');

                               end;

                               write(e[count]);

                               count4:=count4+1;

                          end;

                          b[counter][count2]:='?';

                        end;

                   end;

              end;

              if (b[counter][1]='*') and (b[counter][length(b[counter])]='?') then

              begin

                   count3:=pos('?',b[counter]);

                   b[counter][1]:=e[count][1];

                   b[counter][length(b[counter])]:=e[count][length(e[count])];

                   g:=pos(b[counter],e[count]);

                   h:=h+g;

                   b[counter]:=e[4];

                   if g<>0 then

                   begin

                        for count2:=1 to length(b[counter]) do

                        begin

                             if b[counter][length(b[counter])-count2+1]=(e[count][length(e[count])-count2+1]) then

                             begin

                                  j:=j+1;

                             end;

                        end;

                        j:=length(b[counter]);

                        if j=length(b[counter]) then

                        begin

                             if count4<>0 then

                             begin

                                  write(',');

                             end;

                             write(e[count]);

                             count4:=count4+1;

                        end;

                   end;

                   Insert('*',b[counter],0);

                   b[counter][length(b[counter])+1]:='?';

              end;

              if (b[counter][1]='?') and (b[counter][length(b[counter])]='*') then

              begin

                   count3:=pos('?',b[counter]);

                   Delete(b[counter],length(b[counter]),1);

                   b[counter][1]:=e[count][1];

                   g:=pos(b[counter],e[count]);

                   h:=h+g;

                   if g<>0 then

                   begin

                        for count2:=1 to length(b[counter]) do

                        begin

                             if (b[counter][count2])=(e[count][count2]) then

                             begin

                                  j:=j+1;

                             end;

                        end;

                        if j=length(b[counter]) then

                        begin

                             if count4<>0 then

                             begin

                                  write(',');

                             end;

                             write(e[count]);

                             count4:=count4+1;

                        end;

                   end;

                   Insert('*',b[counter],length(b[counter])+1);

                   b[counter][1]:='?';

              end;

 

              i:=h

         end;

         if h=0 then

         begin

              write('No Match');

         end;

         writeln;

    end;

    readln;

end.