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

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

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

 
 Ответить  Открыть новую тему 
> задача на строки, поиск слов, буквосочетаний, словосочетаний.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Артём

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


Помогите написать программу, которая в тексте ищет слова, словосочетания, буквосочетания из списка.
В списке на каждой строчке расположен отдельный элемент для поиска.
uses crt;
type
st = array [1..10] of String;
rz = array [1..10] of Integer;

function isLetter(c : char) : boolean;
begin
if ((c >= 'A') and (c <= 'z')) or ((c >= #128) and (c <= #175)) or ((c >= #224) and ( c <= #241))
then
isLetter := true
else
isLetter := false;
end;


function FindNextWord(s : string; var b : integer; var w : string) : boolean;
var
i, j : integer;
begin
i := b;
w :='';
while not isLetter(s[i]) and (i <= length(s)) do
i := i + 1;
if i > length(s) then
begin
FindNextWord := false;
exit;
end;
while isLetter(s[i]) do
begin
w := w + s[i];
i := i + 1;
end;
b := i + 1;
if length(w) > 0 then
FindNextWord := true
else
FindNextWord := false;
end;


var
sp : st;
rez : rz;
s, w : string;
tx, str : text;
i, j, b : integer;
BEGIN
clrscr;
i := 0;
j := 0;
b := 1;
assign(tx, 'text.txt');
reset(tx);
assign(str, 'spisok.txt');
reset(str);
While not eof(str) do
begin
i := i + 1;
readln(str, sp[i]);
end;
While not eof(tx) do
begin
s := '';
readln(tx, s);
for j := 1 to i do
begin
while FindNextWord(s, b, w) = true do
begin
If w = sp[j] then
Inc(rez[j]);
end;
b := 1
end;
end;
for j := 1 to i do
WriteLn(sp[j], ' - ', rez[j]);
ReadLn;
close(tx);
close(str);
END.

Вот частичный.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Артём

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


Неужели никто не поможет, или скажите хотя бы где могу найти =)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

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



Const
r: set of char=[',','.',';','!','?',' ',':','"',''''];
VAR
S,W,P :String;
i,ns :integer;

BEGIN
WRITE ('введите сроку: ');
READLN(S);
i:=1; W:='';
WHILE i <= length(S) do
begin
IF not(S[i] in r) then
begin
ns:=i;
WHILE (i<=length(S)) and not(S[i] in r) do
inc(i);
W:=copy(S,ns,i-ns);





Вот алгоритм выделения слова из строки, слово - W. Ну а теперь соответственно сравнивай его с тем что тебе надо, я просто не врубил в задание твоё мальца ))

Сообщение отредактировано: Renbo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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