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

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

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

> Задача на частотный анализ текстового файла
Winniepoohless
сообщение 31.01.2008 17:44
Сообщение #1


Гость






Собственно, условие подобной задачи (олимпиадской) на форуме приводилось (решение - нет):
Привожу еще раз условие:
Дан текст, в котором встречаются слова, состоящие из букв русского и латинского алфавитов и цифр, знаки препинания, пробелы и переводы строк. Требуется найти количество вхождений каждого слова в этот текст Для каждого слова при выводе в скобках указать количество его вхождений в текст.
*************************************************************************
Понятно, что решение надо делать через двоичное дерево. Часть программы есть, но не допру, как дальше:
uses
crt;
type
{ссылка на узел дерева}
TFindTreePtr = ^TFindTreeNode;
TFindtreeNode = record
info: word;
count: integer;
left, right: TFindTreePtr;
end;
var
InFile: Text; {исходный файл}
FileName: string; {имя файла данных}
root: TFindTreePtr;
str: word; {текущий обрабатываемое слово}
ErrCode: integer; {код ошибки при открытии файла}
ask: char; {символ-отклик при выборе режима вывода}
procedure Search (c: string; var node: TFindTreePtr);
begin
if node=nil then begin
node:=New(TFindTreePtr);
node^.info:=c;
node^.count:=1;
node^.left:=nil; {новый лист}
node^.right:=nil;
end
else if c< node^.info then
Search (c,node^.left)
else if c>node^.info then
Search (c,node^.right)
else
node^.count := node^.count+1;
end;

 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Yevgeny
сообщение 1.02.2008 16:45
Сообщение #2


The matrix has me!!!
**

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

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


Цитата
Но никак не пойму, почему у меня ошибка вылазит при запуске программы - can't open file c:\test.txt


Посмотри вот в эти места в программе и разберись...
begin
New(info_list, Create('C:\test.txt')); <<===

info_list^.Run;

Dispose(info_list, Free);
end.


assign(f, file_name);

{$I-}
reset(f);
{$I+}

if IOResult <> 0 then begin
writeln('can''t open file "' + file_name, '"'); <<===
readln;
halt(1);
end;


Может быть у тебя просто нет такого файла??? smile.gif


--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Winniepoohless
сообщение 1.02.2008 17:01
Сообщение #3


Гость






Цитата(Yevgeny @ 1.02.2008 16:45) *

Посмотри вот в эти места в программе и разберись...
begin
New(info_list, Create('C:\test.txt')); <<===

info_list^.Run;

Dispose(info_list, Free);
end.


assign(f, file_name);

{$I-}
reset(f);
{$I+}

if IOResult <> 0 then begin
writeln('can''t open file "' + file_name, '"'); <<===
readln;
halt(1);
end;


Может быть у тебя просто нет такого файла??? smile.gif

Название своего файла (для анализа) я вставляю после assign
А функция IOResult, вроде, просто проверяет правильность выполнения операции (если 0, то ок).
Но чего-то не идет...Можешь у себя попробовать,если вдруг захочется

 К началу страницы 
+ Ответить 

Сообщений в этой теме
Winniepoohless   Задача на частотный анализ текстового файла   31.01.2008 17:44
klem4   type PTInfo = ^TInfo; TInfo = Record _wo...   31.01.2008 18:20
Winniepoohless   Спасибо огромное! Буду разбираться :)   31.01.2008 18:46
Michael_Rybak   Мне это совсем непонятно. Ее нужно делать через ...   31.01.2008 18:57
klem4   Да, кстати, двоичных деревьев в решении я не испол...   31.01.2008 19:02
Winniepoohless   Да, кстати, двоичных деревьев в решении я не испо...   1.02.2008 16:35
volvo   Winniepoohless, вопрос на засыпку: слова 'При...   31.01.2008 19:06
Winnipoohless   Да, "Привет" и "привет" считаю...   1.02.2008 16:10
klem4   volvo, ага чо-то намудрил я мальца в этом месте ..   31.01.2008 19:09
volvo   Естественно. Тогда придется хранить не сами слова,...   1.02.2008 16:16
Гость   Естественно. Тогда придется хранить не сами слова...   1.02.2008 16:37
Yevgeny   Посмотри вот в эти места в программе и разберись...   1.02.2008 16:45
Winniepoohless   Посмотри вот в эти места в программе и разберись....   1.02.2008 17:01
volvo   Это не классификация ошибки... Что именно не идет?...   1.02.2008 17:34
Winniepoohless   Это не классификация ошибки... Что именно не идет...   4.02.2008 14:13


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

 



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