Помощь - Поиск - Пользователи - Календарь
Полная версия: кол-во слов в тексте
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
tigra
Задача на ваше профессиональное рассмотрение:
Подсчитать количество слов в тексте,которые содержат одинаковое кол-во букв.
Слова в тексте разделяются символом ' '
'.' - признак конца строки.

Текст вводится с клавиатуры. Не могу сделать самое главное - разбить текст на слова... Помогите чем могите.
GoodWind
что разделяет слова в тексте ? пробелы, следовательно каждый пробел это конец слова, т.е. если ты встречаешь пробел, значит текущее слово кончилось
на этом принципе и отделяй слова друг от друга.
Altair
Эх, такая тема раз в году точно встречается!
Надо в FAQ будет выложить.
Код

var
s:string;
i:byte;
sl:byte;
begin
readln(s);
for i:=1 to length(s) do If s[i]=' ' then inc(sl);
writeln(sl);
end.

Вот и вся прога.
Amro
Хм smile.gif
Oleg_Z там ведь написано
Цитата
количество слов в тексте, которые содержат одинаковое кол-во букв

А у тебя идёт просто подсчёт всех слов!!!
Тута надо по-другому, к примеру используя дочерний массив, в который будем заносить число букв в слове, мы заносим в массив кол-во букв первого слова, далее берём второе слово, подсчитываем в нём кол-во букв и смотрим есть ли такое число в массиве, если есть то накручиваем переменную с кол-вом слов, если нет то заносим новое число в массив..... и так до конца...
Altair
Ах, да, пардон...
так, а тогда условие не полное!
например строка:
Код
123 asc asd 2345 отвр

сколько в ней таких слов?
Смотря по какой длинне считать!
Если 3-х символьных, то 3 а если из 4 символов, то 2!

Число символов вводится отдельно или смотрится по первой паре?
Amro
Oleg_Z Может имеется ввиду считать слова, которые встречаются в тексте более одного раза. К примеру такая строка, независимо от длины
""xxx xx x xx x xxx xxx xx xxxxx"" тыды кол-во тут равно 8.....
Altair
короче говоря тут не совсем ясно условие!
tigra
В задаче этого не скозано, но по-моему кол-во букв(n) тоже вводится с клавиатуры.
Кажется, тут это можно сделать двумя циклами:
один выделяет слова из текста
Код
until s[i]='.'
,
а другой их считает
Код
if length(sl)=n then x:=x+1
.
Кол-во слов неопределенное (сколько получится), так что я не знаю как их называть и отличать друг от друга...
Amro
Цитата
if length(sl)=n then x:=x+1

Это что такое ты написал??? sl Это что за строка??
Думаю так, если имеется ввиду кол-во букв в слове введённое с клавы, тады будет что то типа того
Код

var
st:string;
i,kol,kol_slov:byte;
s:byte;
begin
readln(st); {сама вводимая строка}
readln(kol_slov); {кол-во букв в слове}
for i:=1 to length(st) do begin If st[i]<>' ' then inc(s)
else if s=kol_slov then inc(kol);
if st[i]=' ' then s:=0; end;
if kol<2 then kol:=0;{если встречается один раз тады колич =  0}
writeln(kol);
end.
BlackShadow
Я же это уже пиал где-то когда-то кому-то...
Флогримм
Цитата(Oleg_Z @ 17.10.04 7:11)
Код

var
s:string;
i:byte;
sl:byte;
begin
readln(s);
for i:=1 to length(s) do If s[i]=' ' then inc(sl);
writeln(sl);
end.

Вот и вся прога.

а как быть, если нет условия разделения слов символом пробела?
что, если мы имеем строку вида 'xxxxxсловоxxxxxxxслово1xxxслово2xx', где x - пробел, как подсчитать кол-во слов в такой строке?
Altair
Сначала удали все лишние пробелы, отанется по одному разделяющему пробелу, затем применяй вышеукащанную схему. Элементарно, Ватсон smile.gif)
xds
Цитата(Oleg_Z @ 19.10.04 7:31)
Сначала удали все лишние пробелы

Удалять слишком тяжело - лучше пропускать...
Altair
Удалять тяжело??
Чего сложного-то?
Ну вобщем пропускать тоже можно.
Тогда можно еще одну переменную логическую завести, и чуточку модернизировать алгоритм вышеуказанный smile.gif
Флогримм
если удалять, получится что-то вроде вот этого
Код
var
s:string;
i:byte;
sl:byte;
begin
readln(s);
while pos('  ',s)<>0 do delete(s,pos('  ',s),2);
if s[1]=' ' then delete(s,1,1);
if s[length(s)]=' ' then delete(s,10,1);
writeln(s);
for i:=1 to length(s) do If s[i]=' ' then inc(sl);
writeln(sl+1);
end.


я думаю, что если в начале и конце строки нет пробелов, тогда кол-во слов в троке будет равно sl+1 т.к. пробелов всегда на один меньше
APAL
Вот, писал прогу давно и не помню уже для каких целей... smile.gif
STATIC.PAS - насколько я помню, подсчитывает статистику слов. Вроде бы считает количество повторений.

Короче давно это было, но покапайтесь, может чего найдете... smile.gif

P.S.: Запаковано WinRar 3.30
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.