Программа ищет слова, у которых количество символов равно заданому, как задать поиск, чтобы выводило и само слово тоже?
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 22.03.2011 21:38
Цитата
Только не знаю как найти позицию слова
Смотря где ты хочешь находить эту самую позицию. Если тебе надо напечатать все слова заданной длины, то делать это нужно там, где сейчас ты увеличиваешь k, правда? Но ведь там у тебя позиция конца слова = (i - 1), а длина слова = j. Внимание, вопрос, как (зная позицию конца слова и его длину) найти начало?
Если же ты будешь делать поиск слова уже после окончания цикла - то сам виноват. Тут уж нельзя (без доп. движений) вычислить, где же было слово какой-то там длины. Придется запоминать в массиве значение i при увеличении k, и потом делать то же самое, что описано в первом абзаце...
Автор: Sav93 23.03.2011 1:23
Цитата(volvo @ 22.03.2011 17:38)
Внимание, вопрос, как (зная позицию конца слова и его длину) найти начало?
Ну вообще s[i-1-h], если s - слово, а h - длинна...