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

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

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

> Задача на Список, Помогите пожалуйста
Bandit
сообщение 8.12.2007 17:48
Сообщение #1





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

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


Задача состоит в чтении некоторого текста, выборе из него слов и подсчете частоты их появления, то есть, в составлении частотного словаря. Для чего нужно составить список слов, найденных в тексте. Каждое очередное слово, прочитанное в тексте, ищется в списке. Если слово найдено, то счетчик его частоты увеличивается, в противном случае слово добавляется к списку.Предполагается, что слова уже выделены из исследуемого текста
и находятся во входном файле.

Что -то я никак не могу сообразить. cray.gif Помогите пожалуйста, если не трудно. Заранее, большое спасибо!!!!

Сообщение отредактировано: Bandit - 12.12.2007 16:30
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 13)
Lapp
сообщение 9.12.2007 1:15
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


1. Объясни мне, неучу, что такое ЛОС. Честно искал в словарях и просто в Яндексе, не нашел ничего подходящего.. sad.gif

2. Текст на каком языке? На русском? Тогда как ты собираешься поступать с различными формами слова? разные окончания, суффиксы, приставки.. Или это не есть реальный текст, а просто набор слов, и о таких вещах беспокоиться не нужно?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 9.12.2007 12:51
Сообщение #3


Гость






Цитата(Lapp @ 9.12.2007 1:15) *

1. Объясни мне, неучу, что такое ЛОС. Честно искал в словарях и просто в Яндексе, не нашел ничего подходящего.. sad.gif

2. Текст на каком языке? На русском? Тогда как ты собираешься поступать с различными формами слова? разные окончания, суффиксы, приставки.. Или это не есть реальный текст, а просто набор слов, и о таких вещах беспокоиться не нужно?



ЛОС- Линейный Односвязный Список. Слова скорее всего любые. Должно быть 100% совпадение. Я думаю здесь лучше тип String использовать.
 К началу страницы 
+ Ответить 
Bandit
сообщение 9.12.2007 12:54
Сообщение #4





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

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



ЛОС- Линейный Односвязный Список. Слова скорее всего любые. Должно быть 100% совпадение. Я думаю здесь лучше тип String использовать.

Я первый раз забыл на форум зайти. blush.gif

Сообщение отредактировано: Bandit - 9.12.2007 13:05
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bandit
сообщение 12.12.2007 16:36
Сообщение #5





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

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


 Type
te=string;
pe=^el;
el=Record
inf:te;
next:pe
end;
Var sag,p,q,sag2:pe;
n,i,j:integer;
procedure COPY (sag:pe; Var sag2:pe); //Копирование списка sag в список sag2
begin
if sag=nil then sag2:=nil
else begin
new (sag2);
sag2^.inf:=sag^.inf;
COPY (sag^.next, sag2^.next)
end;
end;
procedure PRINT (sag:pe);// вывод на экран
Var q:pe;
begin
q:=sag^.next;
while q<>nil do
begin write (q^.inf, ' ');
q:=q^.next
end;
end;
{--------------------------------------------------------------------------------}



begin
New (sag);
sag^.next:=Nil;
p:=sag;
writeln ('Zadayte kol-vo elementov LOS');
readln (n);
For i:=1 to n do
Begin
New (q);
Writeln ('Vvedite zna4 o4erednogo elementa:');
readln (q^.inf);
p^.next:=q; p:=q;
end;
q^.next:=Nil;//Ввод ЛОСа
PRINT (sag);
COPY (sag, sag2);
PRINT (sag2);
writeln;
writeln ('Lx');
PRINT (sag);
readln;
end.



Написал вот как вводить Список и вывести его.
Мне для этой задачи как я понял нужно при вводе слова или символа его нужно искать в списке. Если его там нет, добавить к списку, а если есть повысить счётчик данного слова/символа.

Вот у меня вопрос: как реализовать счетчик у каждого символа, и что б к ним ещё можно было потом обратится для увеличения счётчика. Для этого, что нужно создать ещё один Список, или тут чем-то другим можно обойтись?

Сообщение отредактировано: Bandit - 12.12.2007 16:48
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 12.12.2007 19:28
Сообщение #6


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


разберешься ?

type
PTListElem = ^TListElem;

TListElem = record
data: String;
count: Integer;
next: PTLIstElem
end;

PTList = ^TList;

TList = object
head, last: PTListElem;

constructor Create;
destructor Free;

function Empty: Boolean;

procedure Push(const value: String);
procedure Pop(var value: TListElem);

procedure PrintList;
end;

constructor TList.Create;
begin
head := nil;
last := nil;
end;

destructor TList.Free;
var
T: PTListElem;
begin
while not Empty do begin
T := head;
head := head^.next;
dispose(T);
end;
end;

function TList.Empty: Boolean;
begin
Empty := head = nil;
end;

procedure TList.Pop(var value: TListElem);
var
T: PTListElem;
begin
if not Empty then begin
T := head;
head := head^.next;
value := T^;
dispose(T);
end;
end;

procedure TList.Push(const value: String);
var
R, first: PTListElem;
begin
first := head;

while (head <> nil) and (head^.data <> value) do
head := head^.next;

if head <> nil then begin
inc(head^.count);
head := first;
end else begin
new®;

R^.data := value;
R^.count := 1;
R^.next := nil;

head := first;

if Empty then begin
head := R;
last := head;
end else begin
last^.next := R;
last := R;
end;
end;

end;

procedure TList.PrintList;
var
T: TListElem;
begin
while not Empty do begin
Pop(T);
writeln(T.data, ': ', T.count);
end;
end;

var
list: PTList;

begin
new(list, Create);

list^.Push('asd');
list^.Push('asd');
list^.Push('123');
list^.Push('qwerty');
list^.Push('asd');
list^.Push('123');
list^.Push('poiuytrewq');
list^.Push('asd');

list^.PrintList;

dispose(list, Free);
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bandit
сообщение 12.12.2007 21:29
Сообщение #7





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

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


Спасибо, попробую разобраться. smile.gif Но, когда попробовал запустить выдал ошибку.

Эта ошибка как я заметил, появляется в крупных программах. mad.gif Что это за ошибка и как от неё избавиться!!??

Сообщение отредактировано: Bandit - 12.12.2007 21:30


Прикрепленные файлы
Прикрепленный файл  1.bmp ( 79.02 килобайт ) Кол-во скачиваний: 137
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 12.12.2007 21:49
Сообщение #8


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


ну это явно не Паскалевский еррор ... В Паскале 105 - я ошибка связана с использованием inline вроде ... Какой у тебя компилятор ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.12.2007 21:54
Сообщение #9


Гость






Если в Runtime - "File not open for output"

Особенно актуально при запуске на Дельфи неконсольного приложения, и попытке выполнить WriteLn smile.gif
 К началу страницы 
+ Ответить 
Bandit
сообщение 13.12.2007 9:27
Сообщение #10





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

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


У меня Delphi 7. Прогу пишу в Console Application.

Сообщение отредактировано: Bandit - 13.12.2007 9:28
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.12.2007 9:47
Сообщение #11


Гость






Тогда проверь наличие директивы {$APPTYPE CONSOLE}, потому что с ней ошибки не возникает, а вот без нее - очень даже...
 К началу страницы 
+ Ответить 
Lapp
сообщение 13.12.2007 9:48
Сообщение #12


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Bandit @ 13.12.2007 9:27) *

У меня Delphi 7. Прогу пишу в Console Application.


М
Разговоры про Дельфи - в раздел Дельфи.



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bandit
сообщение 13.12.2007 10:11
Сообщение #13





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

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


Спасибо!!! respect.gif Всё заработало!!! Я думал, что эта строчка какая-то лишняя и удалял её всегда, чтоб место не занимала. blush.gif

Прошу прощения, что не в том разделе форума тему создал. Но ведь консоль Делфи, это ж Турбо Паскаль.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 13.12.2007 10:18
Сообщение #14


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Bandit @ 13.12.2007 10:11) *
Прошу прощения, что не в том разделе форума тему создал. Но ведь консоль Делфи, это ж Турбо Паскаль.

Да?.. Ну, тогда вставляй эту строчку во все ТР-программы и ни в коем случае не выбрасывай! smile.gif
Тема, может, и в том разделе, если ты касаешься только того, что совместимо с ТР.
Но вопрос про ошибку - уже не в том.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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