Автор: Atreides 23.11.2008 23:08
задачка попалась по реализации метода подсчета слов в строке, а вот как реализовать? Была идея поисков пробелов в строке + 1, но как можно найти пробелы в строке?
Автор: Lapp 24.11.2008 12:42
Цитата(Atreides @ 23.11.2008 19:08)
но как можно найти пробелы в строке?
Видимо, я что-то не понимаю. А проверка на s[i]=' ' в цикле до длины строки не покатит?
Автор: volvo 24.11.2008 13:11
Цитата
Была идея поисков пробелов в строке + 1
Не самая удачная идея:
& quot;Вот___тебе___пример,_который___это___подтвер
дает" (пробелы заменены подчеркиваниями) Сколько слов? А пробелов? Слова, кстати, могут разделяться не только пробелами (обратного утверждения в условии тоже нет)
Автор: Unconnected 24.11.2008 19:32
Если предположить, что слова разделяются пробелами, то можно использовать например:
Код
if (s[i]=' ') and (s[i+1]<>' ') then schetchik_slov:=schetchik_slov+1;
Добавлено через 16 мин. Вот программа, могущая работать с большим количеством разделителей. В качестве разделителя могут быть пробел и символ _ . Можно использовать оба, но между двумя словами может быть только один вид разделителя.
Код
var s:string;
a,b:integer;
begin
writeln('Введите строку');
readln(s);
for a:=1 to length(s) do
begin
if (s[a]=' ') and (s[a+1]<>' ') then b:=b+1;
if (s[a]='_') and (s[a+1]<>'_') then b:=b+1;
end;
b:=b+1;
writeln('В строке ', b ,' слов.');
readln;
end.
Автор: Lapp 24.11.2008 19:53
Цитата(Unconnected @ 24.11.2008 15:32)
if (s[i]=' ') and (s[i+1]<>' ') then schetchik_slov:=schetchik_slov+1;
Если это полноценный текст, то есть еще такие вещи как, например, тире, которые обрамлены пробелами.. Кроме того, между абзацами пробелов нет. Не нужно подменять одну задачу другой. Надо считать слова - считай
слова. Вопрос изучен достаточно хорошо: http://forum.pascal.net.ru/index.php?showtopic=6972
Автор: Atreides 24.11.2008 21:39
Все разобрался. Всем спасибо!