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

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

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

> Трехбуквенное сочетание, Помогите!!!
and75
сообщение 18.03.2008 14:44
Сообщение #1





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

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


Помогите пожалуйста! Задача следующая:
Найти в предложенном тексте наиболее часто используемое трехбуквенное сочетание. Выписать все слова с этим набором букв в отдельный файл.
Заранее благодарен!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
andriano
сообщение 18.03.2008 21:56
Сообщение #2


Гуру
*****

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

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


Я, кажется, подозреваю, какие именно трехбуквенные сочетания испольуются чаще всего. ;)

PS. Пока нет своего варианта решения - обсуждать нечего.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
PavelM
сообщение 18.03.2008 21:59
Сообщение #3





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

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


поищи по форуму, примерно такое задание было только там искали корень (однокоренное слово).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
and75
сообщение 19.03.2008 18:06
Сообщение #4





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

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


Вот наваял что-то похожее...
Может кому пригодится...

Код
Program Task1;
Type
  SetLow  = set of 'а'..'я';
  SetUp   = set of 'А'..'Я';
  RecThree = record
    Str   : String[3];
    Kol   : Word;
  end;
Var
  f, f1    : Text;
  Name     : String;
  Stroka   : String;
  RussLow  : SetLow;
  RussUp   : SetUp;
  ThreeLet : String[3];
  NumThree : Word;
  ArrThree : array [1..10000] of RecThree;
  i        : Integer;
  MaxElem  : Word;
  PosMax   : Integer;

Procedure SearchThree;
Var
  j       : Integer;
  isExist : Boolean;
Begin
  isExist:=False;
  for j:=1 to NumThree do
    if ThreeLet = ArrThree[j].Str then
    begin
      Inc(ArrThree[j].Kol);
      isExist:=True;
      Break;
    end;
  if not isExist then
  begin
    Inc(NumThree);
    ArrThree[NumThree].Str:=ThreeLet;
    ArrThree[NumThree].Kol:=1;
  end;
End;

Begin
  Writeln ('Введите имя исходного файла (имя.txt): ');
  Read(name);
  Assign(f, name);
  Assign(f1,'result.txt');
  Reset(f);
  Rewrite(f1);
  ThreeLet:='';
  NumThree:=0;
  PosMax:=0;
  RussLow := ['а'..'я'];
  RussUp  := ['А'..'Я'];
  While Not EOF(f) do
  begin
    Readln(f,Stroka);
    for i:=1 to Length(Stroka) do
    begin
      if Length(ThreeLet)=3 then Delete(ThreeLet,1,1);
      if Stroka[i]=' ' then ThreeLet:='';
       if (Stroka[i] in RussUp) or (Stroka[i] in RussLow) then
          ThreeLet:=ThreeLet+Stroka[i];
      if Length(ThreeLet)= 3 then
        SearchThree;
    end;
    if Stroka[Length(Stroka)] <> '-' then ThreeLet:='';
  end;
  MaxElem:=0;
  PosMax:=0;
  for i:=1 to NumThree do
    if ArrThree[i].Kol>MaxElem then
    begin
      MaxElem := ArrThree[i].Kol;
      PosMax  := i;
    end;
  Writeln('Наиболее часто встречаемое трехбуквенное сочетание: ',
          ArrThree[PosMax].Str);
  Writeln('Количество: ',
          ArrThree[PosMax].Kol);
  {Закрываем текстовые файлы}
  Close(f1);
  Close(f);
End.


Здесь только поиск ОДНОГО трехбуквенного сочетания
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 19.03.2008 19:17
Сообщение #5


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

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

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


Цитата
RussLow := ['а'..'я'];
RussUp := ['А'..'Я'];


С таким описание множеств работать правильно программа просто не будет, в эти интервалы попадает еще куча лишних символов, помимо кириллицы.

поменяй на

['a'..'п', 'р'..'я]

Добавлено через 11 мин.
Кстати насчет задания, на каждой строке файла на сколько я понимаю записано некое словосочетание, а не одно слово ? И скажем в слове qwerty 3-х буквенные сочетания:

-qwe
-wer
-ert
-rty

?




Сообщение отредактировано: klem4 - 19.03.2008 19:22


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





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

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


Цитата(klem4 @ 19.03.2008 18:17) *

С таким описание множеств работать правильно программа просто не будет, в эти интервалы попадает еще куча лишних символов, помимо кириллицы.

поменяй на

['a'..'п', 'р'..'я]

Добавлено через 11 мин.
Кстати насчет задания, на каждой строке файла на сколько я понимаю записано некое словосочетание, а не одно слово ? И скажем в слове qwerty 3-х буквенные сочетания:

-qwe
-wer
-ert
-rty

?

Спасибо за поправку, но по условию задачи там нет никаких псевдосимволов.
Дан некоторый текстовый файл, имя которого следует запросить у пользователя, содержит небольшой, форматированный (2-3 книжных страницы шириной ровно 60 знаков) фрагмент текста на русском языке.
Да все правильна для слова qwerty именно такие сочетания!
Вроде бы все работает правильно...

Добавлено через 2 мин.
Пардон! не "псевдосимволы", а символы псевдографики
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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