|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.03.2008, 19:48 | #1 |
Регистрация: 05.03.2008
Сообщений: 4
|
работа с текстом
помогите решить задачу:задан текст , состоящий из нескольких строк,каждая в свою очередь состоит из слов, разделенных пробелами.
подсчитать кол-во слов в тексте,совпадающих с заданным ключевым словом. при проверке совпадения слов символ "*" (звездочка) в начале или в конце ключевого слова обрабатывать специальным образом: считать его признаком того , что в проверяемом слове на этом месте может находиться непустая последовательность произвольной длины, состоящая из любых символов кроме пробела. Можно считать , что символ "*" в ключевом слове встречаются толко один раз. например, ключевое слово "кор*" будет совпадать со словами "корпус" , "корабль" и т.п , или слову "корпус" могут соответствовать ключвые слова "*пус" , "корп*" и т. п. |
14.03.2008, 20:14 | #2 |
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
|
Для поиска подстроки в строке есть функция pos
k:=pos('кор',s); - возвращает номер позиции в строке s с которой в этой строке идет подстрока 'кор'. Если k=0, то подстрока не найдена. |
14.03.2008, 21:01 | #3 |
Регистрация: 05.03.2008
Сообщений: 4
|
я это знаю но там есть условие
'кор*' соответствует 'корпус' , '*пус' соответствует 'корпус т.е положение этого ключевого слова в слове' |
14.03.2008, 21:11 | #4 |
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
|
Ну, и в чем проблема? Ищите это ключевое слово без звездочки в других словах...
|
15.03.2008, 14:00 | #5 |
Регистрация: 05.03.2008
Сообщений: 4
|
Program translation;
uses wincrt; var w,str,s:array [1..100] of string[50]; kl:string; i,n,k,z,j,l,q:integer; y,p:array [1..43] of integer; begin write('n='); readln(n); write('kl='); readln(kl); for i:=1 to n do begin write('str[',i,']='); readln(str[i]); str[i]:=str[i]+' '; k:=0; while str[i]<>'' do begin p[i]:=pos(' ',str[i]); if p[i]>1 then begin k:=k+1; w[k]:=copy(str[i],1,p[i]-1); end; delete(str[i],1,p[i]); end; end; l:=0; q:=pos('*',kl); delete (kl,q,1); for i:=1 to n do begin for j:=1 to k do y[j]:=pos(kl,w[j]); if ((q=1) and (y[j]>1)) or ((q>1) and (y[j]=1)) then l:=l+1;end; writeln (l); end. вот что у меня получилось, но не ищет число таких слов, исправте пожалуйста!!! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с текстом string | LeoN | Общие вопросы Delphi | 13 | 24.09.2008 10:54 |
Работа с текстом | Sanek_ntsk | Общие вопросы C/C++ | 10 | 12.01.2008 19:42 |
Работа с текстом | wwww | Общие вопросы Delphi | 5 | 18.12.2007 17:23 |
Работа с текстом, в паскале. | Cartman18 | Помощь студентам | 4 | 10.12.2007 18:06 |
работа с текстом (алгоритм шифрования) | GAGARIN-NEW | Компоненты Delphi | 7 | 18.10.2007 09:48 |