Вот собственно мои наработки (Почти все взял с этого ресурса), вроде бы сделал все правильно но результат не выводит, видимо что то не так с последним циклом или с записью слов в массивы:
const limits = ['.',',',':',';','!','?','"'];
var T1,T2,b1,b2:string; i,j,c,p,p1,n,back:integer; bc1,bc2,lishnee:array[1..100] of string;
begin
Writeln('Введите Т1 - оригинал:');
readln(t1);
writeln('Введите Т2 - копию с искажениями:');
readln(t2);
for i:=1 to length(t1) do begin
if t1[i] In limits then t1[i]:= #32; end;
for i:=1 to length(t2) do begin
if t2[i] In limits then t2[i]:= #32;
end;
repeat
p := Pos(' ', t2);
if p > 0 then Delete(t2, p, 1)
until p = 0;
repeat
p1 := Pos(' ', t1);
if p1 > 0 then Delete(t1, p1, 1)
until p1 = 0;
if t1[1] = ' ' then Delete(t1, 1, 1);
if t2[1] = ' ' then Delete(t2, 1, 1);
if t1[Length(t1)] = ' ' then Delete(t1, Length(t1), 1);
if t2[Length(t2)] = ' ' then Delete(t2, Length(t2), 1);
j:=1;i:=1;n:=0;
while(i<=length(t1)) do begin
while(i<=length(t1)) and (t1[i] in limits) do
inc(i);
if i<=length(t1) then begin
back := i;
while(i<=length(t1)) and not(t1[i] in limits) do
inc(i);
inc(n);
bc1[n] := copy(t1, back, i-back);
end;
end;
j:=1;i:=1;n:=0;
while(i<=length(t2)) do begin
while(i<=length(t2)) and (t2[i] in limits) do
inc(i);
if i<=length(t2) then begin
back := i;
while(i<=length(t2)) and not(t2[i] in limits) do
inc(i);
inc(n);
bc2[n] := copy(t2, back, i-back);
end;
end;
for i:=1 to n do begin
bc1[i]:=b1; bc2[i]:=b2;
if b1<>b2 then begin
for c:=1 to length(b2) do
begin
if b1[c]<>b2[c] then lishnee[i]:=lishnee[i]+b2[c];
end;
writeln('В слове ',b2,' лишними символами являются ',lishnee[i]);
end; end; end.
P.S Сильно не ругайтесь, кодингом занимаюсь ~1.5 месяца, в данном случае оптимизация не особо интересует, нужно чтобы РАБОТАЛО.