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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> работа с текстом, исправьте мои ошибки
vjtr
сообщение 15.03.2008 14:01
Сообщение #1





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

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


задан текст , состоящий из нескольких строк,каждая в свою очередь состоит из слов, разделенных пробелами.
подсчитать кол-во слов в тексте,совпадающих с заданным ключевым словом. при проверке совпадения слов символ "*" (звездочка) в начале или в конце ключевого слова обрабатывать специальным образом: считать его признаком того , что в проверяемом слове на этом месте может находиться непустая последовательность произвольной длины, состоящая из любых символов кроме пробела. Можно считать , что символ "*" в ключевом слове встречаются толко один раз.
например, ключевое слово "кор*" будет совпадать со словами "корпус" , "корабль" и т.п , или слову "корпус" могут соответствовать ключвые слова "*пус" , "корп*" и т. п.
вот задача

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.

вот что у меня получилось,
но не ищет число таких слов, исправте пожалуйста!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
vjtr
сообщение 15.03.2008 15:31
Сообщение #2





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

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


я разобралась все получилось
и моя задача вроде чуть-чуть правильная
БОЛЬШОЕ СПАСИБО ВАМ!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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