Другие языки программирования и технологии

Напишите, пожалуйста программу в Дельфи. Вывести k (катое) слово строки S.Слово - набор символов, ограниченный пробелами

Доброго времени суток.

Есть библиотека RxLib, в ней модуль StrUtils, а в нем парочка замечательных функций, решающих вашу задачу.

{положение слова в строке}
function WordPosition(const N: Integer; const S: string;
const WordDelims: TCharSet): Integer;
var
Count, J : Integer;
begin
Count := 0;
J := 1;
Result := 0;
while (J <= Length(S)) and (Count <> N) do begin {пока не достигли нужного слова}
while (J <= Length(S)) and (S[J] in WordDelims) do Inc(J); {пока разделители продвигаемся по строке}
if J <= Length(S) then Inc(Count); {увеличили счетчик}
if Count <> N then {если не завершили, ищем конец слова}
while (J <= Length(S)) and not (S[J] in WordDelims) do Inc(J)
else Result := J;
end;
WordPosition := Result;
end;

{извлечение слова из строки по его номеру}
function ExtractWord(N: Integer; const S: string; const WordDelims: TCharSet) : string;
var
J, Len : Integer;
begin
Len := 0;
J := WordPosition(N, S, WordDelims);
if J <> 0 then {слово есть}
while (J <= Length(S)) and not(S[J] in WordDelims) do begin
Inc(Len); {позиция символа}
Result[Len] := S[J]; {добавили символ}
Inc(J); {следующий символ в строке}
end;
Result[0] := Chr(Len); {установили длину строки}
ExtractWord := Result;
end;

Обращаться так

SomeWord := ExtractWord(k, SourceString, [' ']);

Третьим параметром передается множество разделителей слов. В данном случае - пробел. Тип этого параметра объявлен следующим образом

type
TCharSet = Set of Char;

Удачи!
Матвей Никитин
Матвей Никитин
59 613
Лучший ответ