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


Гость






На самом деле эта задача практически аналогична предыдущей твоей задаче. Вот, смотри (все должно быть в одном регистре):

uses wincrt;

var
w: string;
str, kl: string;

p, count: integer;

begin
{
writeln('str = ');
readln(str);
}
str := ' korpus kampus pusto pusk pus abb bbrtr ';

{
write('kl = ');
readln(kl);
}
kl := 'pus*';

str := str + ' ';

while str <> '' do begin
while (str <> '') and (str[1] = ' ') do delete(str, 1, 1);

p := pos(' ',str);
if (p > 1) then begin
w := copy(str, 1, p - 1); { выделили очередное слово }
if length(w) >= length(kl) then begin

if (kl[1] = '*') and { звездочка в начале? }
(
copy(w, length(w) - length(kl) + 2, length(kl) - 1) =
copy(kl, 2, length(kl)) { тогда смотрим, совпадает ли конец слова }
)
then begin
inc(count); writeln(w);
end
else
if (kl[length(kl)] = '*') and { звездочка в конце? }
(copy(w, 1, length(kl) - 1) = copy(kl, 1, length(kl) - 1)) { проверяем начало }
then begin
inc(count); writeln(w);
end
else
if kl = w then begin { Звездочки нет? Ну и не надо, проверяем все слово... }
inc(count); writeln(w);
end

end;
end;
delete(str, 1, p);

end;
writeln(count);
end.

Вот и все... Значит, и с предыдущей задачей ты тоже не до конца разобралась smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


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

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

 





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