Дан файл, содержащий текст на русском языке. В предложениях некоторые из слов записаны подряд несколько раз подряд(предложение заканчивается точкой или знаком восклицания). Получить в новом файле отредактированный текст, в котором удалены повторы — Pascal(Паскаль)

program pr{Дан файл, содержащий текст на русском языке.В предложениях
 некоторые из слов записаны подряд нескодлько раз подряд(предложение
 заканчивается точкой или знаком восклицания). Получить в новом файле
  отредактированный текст, в котором удалены повторы.};

  var f,g:text;
      prep:set of char;
      words:array [1..50] of string;
      pw:array[1..50] of integer;
      filename,filename1,s,s1,wsp:string;
      n,i,j,t,t1,n1:integer;
  begin prep:=['.',',','!',' '];
        write('Введите имя файла:');
        readln(filename);
        assign(f,filename);
        assign(g,'textg.txt');
        rewrite(g);
        reset(f);
        while not(eof(f)) do
          begin readln(f,s); {s- строка}
                j:=1; words[j]:='';n1:=1;
                for i:=1 to length(s) do
                 begin
                   if s[i] in prep
                      then begin pw[j]:=n1;
                                 j:=j+1;
                                 words[j]:='';
                                 n1:=i+1
                           end
                      else words[j]:=words[j]+s[i];
                 end;
                n:=j+1;
                for j:=1 to n-1 do
                  for i:=j+1 to n do
                    if words[i]=words[j]
                      then begin wsp:='                               ';
                                 wsp:=copy(wsp,1,length(words[j]));
                                 delete(s,pw[i],length(words[i]));
                                 insert(s,wsp,pw[i]);
                            end;
                writeln(g,s)
          end;
        close(g);
        {вывод содержимого полученного файла на экран}
        reset(g);
        while not(eof(g)) do
          begin readln(g,s);
                writeln(s)
          end;
          close(g)
end.

Leave a Comment

65 + = 75