Цитата:
Сообщение от Konrad
Мда, современные подходы к обучению... 
Решение задачи не ищется, а просто нужно взять и решить задачу.
Всегда ваш КО
П.с.: такую задачу можно решить как минимум 3-мя способами.
Срока у тебя string? слова разделены пробелами? или могут быть разделены ",.;:-_"?
Какая макс длина твоей строки?
Кстати, если задача учебная:
разбиваешь задачу на этапы:
1.находишь самое длинное слово.
2.смотришь сколько раз ты его нашел.
3. если 1-н - удаляешь его и к п1.
4. если 2-ва и более - ура ты решил задачу.
|
Возможно я не правильно обьяснил. Подстрока это не слово, со словом я решил задачу довольно давно.
Исходный код моей программы:
Код:
procedure TForm3.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm3.Button2Click(Sender: TObject);
var
//массив в котором будем хранить одинаковые
mass: array[1..5] of string;
s,s1,bgs:string;
i,c,bgi,bgic,h:integer;
mascount:integer;
begin
// это чтобы выполнился if для самого большего слова, если таковое является последним
s:=(Edit1.Text)+' ';
//Обнуляем некоторые переменные…
s1:='';
c:=0;
bgs:='';
bgi:=0;
bgic:=1;
mascount:=0;
//Обнуляем все поле для текста
Memo1.Lines.Clear;
//Начинаем обработку
for i:=1 to Length(s) do
begin
if s[i]<>' ' then
begin
//Повышаем счетчик букв
Inc(c);
//Формируем слово
s1:=s1+s[i];
end
else
begin
if c>bgi then
begin
bgi:=c;
bgs:=s1;
bgic:=1;
for h:=1 to 5 do
begin
mass[h]:=''
end;
mascount:=0;
end
else if (c=bgi) then
begin
Inc(bgic);
if (c=bgi) and (bgs<>s1) then
begin
Inc(mascount);
mass[mascount]:= s1;
end;
end;
//Обнуляем временные переменные
s1:='';
c:=0;
end;
end;
Memo1.Lines.Add('Дана строка:'+Edit1.Text);
Memo1.Lines.Add('Самая длинная подстрока, в которой количество букв(символов): '+bgs);
Memo1.Lines.Add('Самая длинная подстрока встречается: '+inttostr(bgic));
Memo1.Lines.Add('В котором количество букв: '+inttostr(bgi));
if mass[1]<>'' then
begin
Memo1.Lines.Add('Также есть и другие подстроки с одинаковым количеством букв(символов): ');
for i:=1 to 5 do
begin
if mass[i] <>'' then
Memo1.Lines.Add(mass[i]+' ');
end;
end;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
Edit1.Text:='';
end;
procedure TForm3.N1Click(Sender: TObject);
var
i: integer;
begin
i:=Form4.ShowModal;
end;
end.
Помогите пожалуйста переделать, чтобы находила подстроку.
Например:
аббапролдаббанров
ответ: абба