Все это конечно круто, но зацените, как я это замутил!!! Правда, наверное столько лишних действий.
Код
{Дана текстовая строка из 50 символов. Найти кол-во и месторасположения
одинаковых цепочек символов. Цепочка символов - набор символов между
пробелами.}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
label 10,20;
var
st: string [50];
nom: array [1..25] of integer;
mesta: array [0..25] of integer;
slova: array[1..4, 1..25] of string[25];
pr: array [1..26] of boolean;
i,j,kolvos,p,kolod: integer;
begin
st:=Edit1.Text;
kolvos:=0;
p:=1;
i:=1;
for i:=1 to 4 do
begin
for j:=1 to 25 do slova[i,j]:='';
end;
for j:=1 to 25 do nom[j]:=0;
for j:=1 to 25 do mesta[j]:=0;
for i:=1 to 50 do
begin
if st[i]=' ' then
begin
kolvos:=kolvos+1;
for j:=p to i-1 do slova[1,kolvos]:=slova[1,kolvos]+st[j];
slova[2,kolvos]:=IntToStr(p);
slova[3,kolvos]:=IntToStr(0);
slova[4,kolvos]:=IntToStr(1);
p:=i+1;
end;
end;
kolvos:=kolvos+1;
for j:=p to 50 do slova[1,kolvos]:=slova[1,kolvos]+st[j];
slova[2,kolvos]:=IntToStr(p);
slova[3,kolvos]:=IntToStr(0);
slova[4,kolvos]:=IntToStr(1);
kolod:=0;
for i:=1 to 26 do pr[i]:=false;
for i:=1 to kolvos do
begin
if slova[3,i]='1' then goto 20;
for j:=i+1 to kolvos do
begin
if slova[1,i]=slova[1,j] then
begin
if slova[3,j]='1' then goto 10;
if slova[4,i]='1' then
begin
slova[4,i]:='0';
kolod:=kolod+1;
end;
kolod:=kolod+1;
slova[3,j]:=IntToStr(1);
pr[i]:=true;
end;
10: end;
20: end;
Memo1.Lines.Add(IntToStr(kolod));
Memo1.Lines.Add('Месторасположения одинаковых цепочек');
for i:=1 to 26 do
begin
if (slova[3,i]='1') or (slova[4,i]='0') then
Memo1.Lines.Add(slova[2,i]);
end;
end;
end.
Вот так. :thanks: