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

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

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

 
 Ответить  Открыть новую тему 
> задача на строки, поиск слов, буквосочетаний, словосочетаний.
WhiteFang
сообщение 21.12.2006 16:23
Сообщение #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 
 К началу страницы 
+ Ответить 
WhiteFang
сообщение 22.12.2006 14:31
Сообщение #2





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

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


Неужели никто не поможет, или скажите хотя бы где могу найти =)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Renbo
сообщение 22.12.2006 14:55
Сообщение #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 - 22.12.2006 14:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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