unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{Нахождение номера слова, накрывающего k-ую позицию}
function Ks(s,k:string):integer;
  var i,ind,ns,l:integer;
  begin
   l:=length(s);
   ns:=0; ind:=0;
   for i:=1  to l do begin
    if ((ind=0) and (s[i]<>' ')) then begin
    inc(ns);
    ind:=1;
    end else begin
    if ((ind=1) and (s[i]=' ')) then ind:=0;
    end;
    if strtoint(k)=i then result:=ns
    end;
   end;

procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Clear;
edit2.Clear;
edit3.Clear;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
edit2.text:=inttostr(ks(edit1.Text, edit3.text));
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var k,o,m,e,u:integer;
a,b:set of char;
 begin
     if key=#13 then
     begin edit2.text:='порядковый номер слова - '+inttostr(ks(edit1.text,edit3.text));
      {нахождение позиции начала слова, перекрывающего к-ую позицию}
     m:=0; a:=[]; b:=[]; u:=strtoint(edit3.text);
     
     if (u=0) or (u>length(edit1.text))then
      showmessage('Результаты будут неверны. Введите число от 1 до '+inttostr(length(edit1.text)));

            while edit1.text[u]=' ' do u:=u-1;
      while edit1.text[u]<>' ' do begin
       if u=0 then break else  u:=u-1;end;
     {нахождение кол-ва повторяющихся символов}
     u:=u+1;
     e:=length(edit1.text);
          for o:=u to e do begin
          if edit1.text[o]=' ' then break else begin
             if (not(edit1.text[o] in a)) and (not(edit1.text[o] in b)) then
           include(a,edit1.text[o])
           else if (edit1.text[o] in a) and (not(edit1.text[o] in b)) then
           begin inc(m); include(b,edit1.text[o]); end;  end;  end;
      edit2.text:=edit2.text+'  количество повтор. символов = '+inttostr(m);
     end;
     end;
end.
