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

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

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

> Выписать слова в алфавитном порядке
сообщение
Сообщение #1


Новичок
*

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

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


Добрый день! Помогите пожалуйста со следующей задачей:
Дан текстовый файл, состоящий из слов, разделенных пробелами и запятыми. Слова по строкам не переносятся.
Необходимо упорядочить слова в алфавитном порядке с указанием строк, в которых они встречаются. Реализовать
всё надо с помощью деревьев.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

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

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


Выкладываю:

ОСНОВНОЙ ПРОЕКТ:

program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils,
Unit1 in 'Unit1.pas';
var Root:TTree; x:T;
f:text;

begin
assign(f,'input.txt');
reset(f);
WordsInTree(f);
Print(Root);
readln;
end.



МОДУЛЬ:


unit Unit1;

Interface
const
StrLength = 15;
type
TElem=integer;
TIntTree=^TNodeInt;
TNodeInt=record
Info:TElem;
Left,Right:TIntTree
end;

T=record
s:string[StrLength];
tree: TIntTree; { Это - тип "дерево целых" }
end;

TTree=^TNode;
TNode=record
info:T;
Left, Right: TTree; { Потомки }
end;

var n:integer;
s:string;
Root:TTree;
x:T;
IntRoot:TIntTree;

Procedure WordsInTree(var f:text);
Procedure Insert(var root:TTree; X:T);
Procedure IntInsert(var RootInt:TIntTree; x:TElem);
Procedure Print(var Root:TTree);

Implementation
Procedure IntInsert(var RootInt:TIntTree; x:TElem);
//Создание дерева целых чисел
Procedure CreateNode(var p:TIntTree; n:TElem);
//Дополнительная процедура, создающая и инициализирующая новый узел
begin
New(p);
p^.Info:=n;
p^.Left:=nil;
p^.Right:=nil
End;
Begin
if RootInt=nil Then CreateNode(RootInt,X) { создаем новый узел дерева }
else
with RootInt^ do
begin
if info<X then IntInsert(Right,X)
else
if info>X Then IntInsert(Left,X)
end;
End;


Procedure Insert(var root:TTree; X:T);
//Создание дерева
Procedure CreateNode(var p:TTree; n:T);
begin
New(p);
p^.Info:=n;
p^.Left:=nil;
p^.Right:=nil
End;
begin
if Root=nil Then CreateNode(Root, X)
else
with Root^ do
begin
if info.s<X.s then Insert(Right,X)
else
if info.s>X.s Then Insert(Left,X)
else
IntInsert(info.tree, n)
end;
end;

Procedure WordsInTree(var f:text);
var i,back:integer; a:string;
Begin
n:=0;
while not eof(f) do
begin
Inc(n);
ReadLn(f,s);
i:=1;
while(i<=length(s)) do
begin
while(i<=length(s)) and (s[i] in [',',' ']) do
inc(i);
if i<=length(s) then
begin
back:=i;
while(i<=length(s)) and not(s[i] in [',',' ']) do
inc(i);
a:=copy(s,back,i-back);
IntInsert(IntRoot,n);
X.s:=a;
Insert(Root,X);
end;
end;
end;
End;

Procedure Print(var Root:TTree);
var
i:integer;
Begin
if Root<>nil then
begin
print(Root^.Left);
writeln(Root^.Info.s);
print(Root^.Right)
end
End;


End.


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

Сообщений в этой теме
Даша   Выписать слова в алфавитном порядке   10.12.2010 22:56
volvo   И Вам день добрый. Обязательно поможем, как только…   10.12.2010 23:26
Даша   Затруднение как раз с деревьями. Как в данной зада…   11.12.2010 0:06
TarasBer   Ну в данном случае может помочь дерево, у которого…   11.12.2010 0:39
volvo   Не нужно здесь префиксное дерево, не надо забивать…   11.12.2010 1:03
TarasBer   > Не нужно здесь префиксное дерево, не надо заб…   11.12.2010 1:36
volvo   Даша, в качестве иллюстрации работоспособности: Ru…   11.12.2010 15:41
TarasBer   Префиксное дерево строк + данные о номере строки в…   11.12.2010 18:20
Даша   Ого.. Не думала что эта задача вызовет жаркий спор…   12.12.2010 4:05
volvo   По ссылке, которую я привел, ходила? Там приведено…   12.12.2010 5:12
TarasBer   > T = record s: string[StrLen]; tree: T…   12.12.2010 5:30
volvo   Потому что слово может встречаться не в одной стро…   12.12.2010 6:26
Даша   Пока что написала только это: interface const St…   12.12.2010 18:33
volvo   Да, именно так. А что, это как-то противоречит зад…   12.12.2010 19:40
Даша   Нет нет. Я просто спросила чтобы убедиться правил…   12.12.2010 19:57
volvo   Даша, смотри... Я могу, конечно отвечать на твои в…   13.12.2010 17:02
Даша   Согласна :) . Невнимательность подвела, совершенн…   13.12.2010 21:22
Даша   Непонятна функция GetWords.. Ведь она же принимает…   13.12.2010 21:43
volvo   Я не использовал саму функцию. Я использовал тольк…   13.12.2010 22:01
Даша   Совсем не получается это реализовать.. Непонятно,…   13.12.2010 23:57
volvo   Хм... Вот так, наверное: var s: string; // ... C…   14.12.2010 0:04
Даша   Да! Спасибо!   14.12.2010 0:10
Даша   Вот то что получилось написать.... Implementation …   14.12.2010 1:12
volvo   Неправда. Печатается. Не всё, но слова, выдранные …   14.12.2010 1:32
Даша   При запуске программы появляется пустая консоль и…   14.12.2010 1:36
volvo   Да? Ну, смотри, что у меня появляется:   14.12.2010 1:40
Даша   Ну а у меня чистое окно! Использую Borland Del…   14.12.2010 1:44
volvo   Значит, неправильно что-то описываешь. Поэтому все…   14.12.2010 1:52
Даша   Выкладываю: ОСНОВНОЙ ПРОЕКТ: program Project2; …   14.12.2010 1:55
volvo   Ай-яй-яй :) Но если дублирование переменной X - …   14.12.2010 2:11
Даша   Да, понимаю. Каждый раз просто печатаю "ничег…   14.12.2010 2:12
volvo   А зачем? :) Смотри: ты нашла очередное слово (s).…   14.12.2010 3:09
Даша   Ну думаю с этим я смогу справиться :) Огромное вам…   14.12.2010 3:14
Гость   Помогите плиз с решение: В данной строке найти сам…   23.01.2012 17:35


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

 





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