function CountWords(const S: string): integer;
var WrdCnt: integer;
Len: integer;
Pos: integer;
procedure SkipSpace;
begin
while (Pos<=Len)and(S[Pos] = ' ') do inc(Pos);
end;
procedure ScanWord;
var WrdLen: integer;
begin
WrdLen:=0;
while (Pos<=Len)and(S[Pos] <> ' ') do begin
inc(WrdLen);
inc(Pos);
end;
if (WrdLen > 0)and(WrdLen <= 4) then inc(WrdCnt);
end;
begin
WrdCnt:=0;
Len:=Length(S);
Pos:=1;
while Pos <= Len do begin
SkipSpace;
ScanWord;
end;
Result:=WrdCnt;
end;
Помогите, очень прошу
Слова в тексте разделены пробелом. Подсчитать количество слов длина которых не превышает 4-х букв
Цитата:
Originally posted by Dural
Слова в тексте разделены пробелом. Подсчитать количество слов длина которых не превышает 4-х букв
Слова в тексте разделены пробелом. Подсчитать количество слов длина которых не превышает 4-х букв
Код:
вообще-то такие вещи самостоятельно писать надо!
по-моему, все чуть проще...
program e_moe; { :-)) }
var
st : string:
ksl,ksm,i : integer;
sm : string;
begin
ksl:=0;
ksm:=0;
i=1;
while i<=lenght(string) begin
if pos(string,i,1)=' ' do begin
if ksm<4 then ksl:=ksl+1;
ksm:=0;
end;
i:=i+1;
ksm:=ksm+1;
end;
writeln('Количество слов в которых меньше 4 символов=',ksl);
end.
Цитата:
Originally posted by Evgen2877
Что-то Вы, батенька, перемудрили :-)))
по-моему, все чуть проще...
Что-то Вы, батенька, перемудрили :-)))
по-моему, все чуть проще...
Знаю. Но мне так больше нравится - красиво.
В принципе и без pos можно обойтись. Просто я увлекался парсингом и привык всё делать строго - вдруг слово в строке какое понадобится?
ЗЫ а если два пробела между словами?
и
:=i+1;
ksm:=ksm+1;
на
inc(i);
inc(ksm);
было-б время - переписал бы все ;)
тогда придется цикл начинать с 2, skl изначально присвоить 1 (одно-то слово наверняка в строке есть) и перед инкрементацией ksl проверять на пробел i-1 ый символ строки. увеличивать, соответственно, в случае отрицательного результата проверки
конечно, можно, только под рукой Паскакаля не было, а формат функции inc к своему стыду, подзабыл. боялся ошибиться.
Спасибо, я так и сделала