![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравствуйте. Нужна помощь с задачей: Создать новый текст, содержащий все слова исходного текста, которые оканчиваются
на ту же букву, что и слово максимальной длины. У меня почему-то ничего не выводится в listbox. Вот исходный код: Код:
procedure TForm1.BitBtn4Click(Sender: TObject); begin for i:=1 to length(s) do begin if s[i] in D then begin if i - prev > 1 then begin if i - prev - 1 > length(max_word) then max_word:=copy(s, prev + 1, i - prev - 1); ListBox1.Items.Add(copy(s, prev + 1, i - prev - 1)); end; prev:=i; end; end; end; Последний раз редактировалось Anthony_1998, 11.04.2019 в 12:22. |
#2
|
|||
|
|||
![]() Вот забыл добавить:
Код:
const D = [' ', ',', '.']; Последний раз редактировалось Anthony_1998, 11.04.2019 в 12:23. |
#3
|
||||
|
||||
![]() Не причесано, на коленке, но, работает, оптимизацию, обработку ошибок и другие разделители оставлю вам на закуску:
Код:
procedure TForm1.Button1Click(Sender: TObject); var fL : TStringList; i : integer; maxlenstr, s, s2 :string; lastchar:char; begin maxlenstr:=''; s:=''; s2:=''; fL := TStringList.Create; try fL.Delimiter := ' '; fL.StrictDelimiter := True; fL.DelimitedText := edit1.text; for i := 0 to fl.Count - 1 do if Length(fL[i])>Length(maxlenstr) then maxlenstr:=fL[i]; // lastchar:= maxlenstr[length(maxlenstr)]; // showmessage('max len word: '+maxlenstr+#13#10+'word len = '+ inttostr(length(maxlenstr))+#13#10+ 'word last char = '+lastchar); // for i := 0 to fl.Count - 1 do begin s:=fL[i]; if Trim(S)<>'' then begin if s[length(s)] = lastchar then s2:=s2+ ' ' + s; end; end; // memo1.Lines.add(s2); finally fL.Free end; end; |
#4
|
|||
|
|||
![]() спасибо огромное
|