IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> Подсчет слов в строке, Реализация метода поиска
Atreides
сообщение 23.11.2008 19:08
Сообщение #1


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


задачка попалась по реализации метода подсчета слов в строке, а вот как реализовать? Была идея поисков пробелов в строке + 1, но как можно найти пробелы в строке?


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 24.11.2008 8:42
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Atreides @ 23.11.2008 19:08) *
но как можно найти пробелы в строке?

Видимо, я что-то не понимаю. А проверка на s[i]=' ' в цикле до длины строки не покатит?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.11.2008 9:11
Сообщение #3


Гость






Цитата
Была идея поисков пробелов в строке + 1
Не самая удачная идея:

"Вот___тебе___пример,_который___это___подтверждает" (пробелы заменены подчеркиваниями) Сколько слов? А пробелов? Слова, кстати, могут разделяться не только пробелами (обратного утверждения в условии тоже нет)
 К началу страницы 
+ Ответить 
Unconnected
сообщение 24.11.2008 15:32
Сообщение #4


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Если предположить, что слова разделяются пробелами, то можно использовать например:
Код

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.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 24.11.2008 15:53
Сообщение #5


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Unconnected @ 24.11.2008 15:32) *
if (s[i]=' ') and (s[i+1]<>' ') then schetchik_slov:=schetchik_slov+1;
Если это полноценный текст, то есть еще такие вещи как, например, тире, которые обрамлены пробелами.. Кроме того, между абзацами пробелов нет. Не нужно подменять одну задачу другой. Надо считать слова - считай слова. Вопрос изучен достаточно хорошо: Разбиение на слова. Все способы.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Atreides
сообщение 24.11.2008 17:39
Сообщение #6


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Все разобрался. Всем спасибо!


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 13.07.2025 2:37
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"