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

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

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

 
 Ответить  Открыть новую тему 
> Задача на Список, Помогите пожалуйста
сообщение
Сообщение #1





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

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


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

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

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


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

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

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


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

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


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


Гость






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

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

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



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





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

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



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

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

Сообщение отредактировано: Bandit -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





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

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


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

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

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


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


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

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

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


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


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


Гость






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

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





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

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


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

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


Гость






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


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

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

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


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

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


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



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





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

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


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

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


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

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

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


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

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


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

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

 





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