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

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

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

> работа с текстом, исправьте мои ошибки
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 9.03.2021 6:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name