program Number_1_4;
uses Crt;
{Создать текстовый файл. С помощью созданного для решения этой задачи файла
Ключевых слов собрать статистику по частоте появления ключевых
Слов в тексте исходного файла. Последовательность ключевых слов упорядочить по
алфавиту}
type ss=string[20];
sisx=string[80];
tword = record
st: ss;
i: word;
end;
ff=file of ss;{файл для хранения
ключевых слов}
aa= array[1..60] of tword; {массив для хранения результатов обработки исходного файла ключевых слов в памяти; Предполагаем, что более 60 различных ключевых слов у нас не будет в одном тексте}
var x:integer;
stt:aa;
f:ff;
procedure File_create(var t:text);
var i:word;
str: ss;
si:sisx;
k:char;
Begin
str:='ttt.txt';
gotoxy(40,10);
writeln('Имя файла для хранения текста -ttt.txt');
assign(t,str);
rewrite(t);
Repeat
writeln('Вводите текст');
readln(si);{Вводим и записываем текст построчно}
writeln(t,si);
writeln('Текст весь введен?- y or n');
readln(k);
until k='y';
close(t); {Обязательное закрытие файла, чтобы сформировать признак конца файла и
иметь возможность его проверить при чтении файла}
end;
function test_file(var t:text):boolean;
Var
b:boolean;
|
|
Begin
test_file:=false;
gotoxy(40,10);
writeln('Проверяем всегда наличие файлов',#10#13, ' для работы');
ssign(t,'ttt.txt');
{$i-}
reset(t);
{$i+}
if ioresult<>0 then
Begin
writeln('Файл не найден с исходным текстом');
writeln('Необходимо создать или заполнить файл');
File_create(t);
b:=test_file(t);
exit;
End else
test_file:=true;
end;
procedure file_key;
var x:integer;
a:ss;
k:char;
Begin
assign(f,'key.txt');
rewrite(f);
Repeat
writeln('Введите последовательность ключевых слов '
,#10#13,' наличие которых хотите',#10#13,
' проверить в некотором тексте');
{Коды конца строк позволяют вывести текст более компактно }
readln(a);
write(f,a);
writeln('Все слова введены - y or n');
readln(k);
until k='y';
close(f);
end;
procedure key_load;
{Ключевые слова размещаем в памяти, чтобы обеспечить проверку исходного текст}
Var
sa:ss;
Begin
x:=1;
assign(f,'key.txt');
reset(f);
While not eof(f) do
Begin
read(f,sa); write(sa,'***');
stt[x].st:=sa;
stt[x].i:=0;
inc(x);{Количество слов будет на 1 меньше!!}
end;
writeln('Количество слов=', x-1);
close(f);
{Ключевые слова прочитаны из файла и сформирован шаблон для представления результатов обработки текста. Количество определенных ключевых слов будет заноситься в поле результата компоненты записи }
end;
procedure key_word_stat;
{Статистику по частоте появления ключевых слов в тексте соберем при чтении тестового файла}
var p:boolean;
t,j:integer;
f:text;
str:ss;
Begin
p:=test_file(f);
If p then
Begin
While not eof(f) do
Begin
readln(f,str);
writeln(str);
for j:=1 to x-1 do
Begin
t:=pos(stt[j].st,str);
while t<>0 do
Begin
inc(stt[j].i);
delete(str,t,length(stt[j].st));
{ удаляем те ключевые слова в строке, которые уже найдены }
t:= pos(stt[j].st,str);
end;
writeln('***',stt[j].st,stt[j].i);
{предложение только для контроля за решением задачи}
end;
end;
close(f);
readln;