Помощь - Поиск - Пользователи - Календарь
Полная версия: Текст
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Sav93
Программа ищет слова, у которых количество символов равно заданому, как задать поиск, чтобы выводило и само слово тоже?
 program prog;
uses crt;
var st : string;
i,j,k,count : integer;

begin
clrscr;
writeln('Vvedite text: ');
read(st);

write('koli4estvo simvolov=');
readln(count);

st := st+' ';
j := 0;
for i := 1 to length(st) do
if (st[i]<>' ') then inc(j) else
begin
if (j=count) then inc(k);
j := 0;
end;

writeln(st[]);
writeln(k,' slov s dlinoy=',count);
readln;
end.

Я думаю надо так
 st1:=copy(st,pos(?) ,count);
writeln(st1);

Только не знаю как найти позицию слова, знаю только его длинну...
volvo
Цитата
Только не знаю как найти позицию слова
Смотря где ты хочешь находить эту самую позицию. Если тебе надо напечатать все слова заданной длины, то делать это нужно там, где сейчас ты увеличиваешь k, правда? Но ведь там у тебя позиция конца слова = (i - 1), а длина слова = j. Внимание, вопрос, как (зная позицию конца слова и его длину) найти начало?

Если же ты будешь делать поиск слова уже после окончания цикла - то сам виноват. Тут уж нельзя (без доп. движений) вычислить, где же было слово какой-то там длины. Придется запоминать в массиве значение i при увеличении k, и потом делать то же самое, что описано в первом абзаце...
Sav93
Цитата(volvo @ 22.03.2011 17:38) *

Внимание, вопрос, как (зная позицию конца слова и его длину) найти начало?

Ну вообще s[i-1-h], если s - слово, а h - длинна...
volvo
Ну вот так и находи...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.