Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Prolog] Помогите сделать


Автор: n1tro 12.6.2007, 15:45
В заданном предложении подсчитать количество слов.

Автор: cherep 18.6.2007, 04:39
Если еще надо, то вот вариант решения на SWI

Код

get_space(Space) :-
 [Space] = " ".

num_words("", 0) :-!.

num_words(S, 1) :-
 get_space(Space),
 \+ member(Space, S),
 !.
 
num_words(S, N) :-
 get_space(Space),
 append(A, [Space | S1], S),
 \+ member(Space, A),
 num_words(S1, N1),
 N is N1+1.


Использование

Код

[debug] 49 ?- num_words("", N).

N = 0 ;

No
[debug] 50 ?- num_words("abc", N).

N = 1 ;

No
[debug] 51 ?- num_words("abc def dh kkk", N).

N = 4 ;

No


Единственное, тут не учтено что пробелов между словами может быть больше чем 1, а так же что в начале и конце предложения могут быть пробелы. В таком случае, они будут "увеличивать" число слов. Если надо учесть этот случай, то надо усовершенствовать программу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)