Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/35: Рейтинг темы: голосов - 35, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 16

Анаграммы

08.08.2012, 08:58. Показов 7460. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Дан словарь и фраза. Найти анаграммы. Вывести результаты в файл. (На всякий случай пример анаграмм: клоун-колун-уклон-кулон, монета-немота.) Смог сделать поиск только если вводить слова, а вот чтобы брать их из файла, не получается.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
uses heaptrc, lineinfo, crt;
var s: text;
    i: integer;
    str, str1, str2: string;
    f: boolean;
    ch: char;
    b1, b2: array['А'..'я'] of integer;
 
   begin
   clrscr;
      i:=0;
      assign (s, 'slovar.txt');
      reset (s);
      while not eof(s) do
      begin
      readln (s, str);
      {i:=i+1;} //вот здесь ошибка exitcode 201, хотя во всех примерах так
      inc (i);
      end;
      close (s);
      writeln (i, 'strok');
      readln;
 
      for ch:='А' to 'я' do
         begin
            b1[ch]:=0;
            b2[ch]:=0;
         end;
      readln (str1);
      readln (str2);
      for i:=1 to length(str1) do
         inc(b1[str1[i]]);
         for i:=1 to length(str2) do
            inc(b2[str2[i]]);
            f:=true;
            for ch:='А' to 'я' do
               if b1[ch]<>b2[ch] then
               f:=false;
               if f then writeln ('yes')
               else writeln ('no');
               readln;
   end.
Надеюсь на помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.08.2012, 08:58
Ответы с готовыми решениями:

Анаграммы
1)Входной файл содержит дату в формате dd.mm.gggg.Гарантируется, что это корректная дата. Программа должна вывести дату следующего дня в...

Слова анаграммы
Добрый вечер нужна помощь. 1) дан массив слов. Дано слово. Найти сколько раз в массиве встречаются слова анаграммы данного слова. 2)...

Анаграммы
Напишите программу, которая вводит с клавиатуры слово длиной не более 14 букв и выводит на экран количество различных анаграмм, которые...

7
Фрилансер
 Аватар для CodeR
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,603
Записей в блоге: 1
08.08.2012, 09:21
Создаешь файл например slova.txt заполняешь его словами каждое слово на отельной строке, затем в программе пишешь
Pascal
1
2
3
4
5
6
Assign(f,'slova.txt');Reset(f);{Открываем файл для чтения}
While not Eof(f) do {Пока не конец файла}
 Begin
  readln(f,st);{Из файла считываем строку в переменную st}
  {Тут сам поиск}
 End;
0
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 16
08.08.2012, 09:35  [ТС]
Словарь есть. Только непонятно как будет работать тогда поиск, точнее как из файла будут браться слова и сравниваться с другими. Если не сложно, может напишете поиск? т.к. что менять в своем не совсем понятно, там ведь 2 переменные (2 слова)...
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
08.08.2012, 10:49
Цитата Сообщение от MrSmmiT Посмотреть сообщение
там ведь 2 переменные (2 слова)...
Ну так первая задается, а вторая(анаграмма) ищется в словаре=файле.

Добавлено через 4 минуты
Просто приделать поиск к Вашему коду никак нельзя, какие-то неизвестные модули, в коде какая-то чушь, как находятся анаграммы вообще нет. Да и суть задания Вы по нормальному написать не можете, какое-то жевание соплей.
0
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 16
08.08.2012, 11:34  [ТС]
Задание так написано в методичке! В общем, как я понял, надо писать слово, и программа должна искать в словаре анаграммы.
На счет поиска. Простой поиск в файле я делать умею, но тут ведь надо искать не вводимое слово, а всевозможные его анаграммы. Может быть надо сделать так: вводим слово, программа переставляет буквы, а уже затем ищет то, что получилось в словаре.?
Если так, то теперь надо разбираться с "перестановкой" букв в слове...
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
08.08.2012, 12:44
Цитата Сообщение от MrSmmiT Посмотреть сообщение
Дан словарь и фраза.
Вводим фразу.
Разбиваем ее на слова, которые пишем в массив.
К каждому слову ищем анаграммы.
Для этого пишем функцию вида
Pascal
1
function Anagramma(s1,s2:string):boolean;
ищем в файле для каждого слова анаграммы и выводим в новый файл слово и найденные к нему анаграммы или сообщение что анаграмм нет..

Добавлено через 19 минут
Кстати в каком Паскале пишешь? Если не АВС, то будут проблемы с русскими словами.

Добавлено через 35 минут
Вот для Паскаль АВС.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
function Anagramma(s1,s2:string):boolean;
var s3,s4:string;
    f:boolean;
begin
if length(s1)<>length(s2)then f:=false
else
 begin
  s3:=s1;s4:=s2;
  f:=true;
  while(length(s3)>0) and f do
  if pos(s3[1],s4)>0 then
   begin
    delete(s4,pos(s3[1],s4),1);
    delete(s3,1,1);
   end
  else f:=false;
 end;
Anagramma:=f;
end;
const rz=[' ',',',';','.','!','?'];//разделители слов, добавить или убавить если нужно
var f,g:text;
    s,s1,s2:string;
    i,j,n:byte;
    b:boolean;
begin
writeln('Введите фразу:');
read(s);
assign(f,'slova.txt');
assign(g,'result.txt');
rewrite(g);
n:=length(s);
i:=1;
while i<=n do
if not(s[i] in rz)and((i=1)or(s[i-1] in rz)) then
 begin
  j:=i;
  s1:='';
  while(j<=n)and not(s[j] in rz) do
   begin
    s1:=s1+s[j];
    j:=j+1;
   end;
  write(g,s1,': ');
  reset(f);
  b:=false;
  while not eof(f) do
   begin
    readln(f,s2);
    if Anagramma(s1,s2) then
     begin
      b:=true;
      if s2<>s1 then write(g,' ',s2);//если не нужно писать само слово, если оно есть в файле
     end;                            //иначе просто write(g,' ',s2);
   end;
  if not b then write(g,' нет анаграмм');
  writeln(g);
  close(f);
  i:=i+length(s1);
 end
else i:=i+1;
close(g);
write('Результат записан в файл result.txt')
end.
3
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 16
08.08.2012, 16:05  [ТС]
Спасибо огромное! Работает! К сожалению версия Паскаля FreePascal. Может быть где-то написать, как у меня было, "А..я"?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
08.08.2012, 16:08
Можно конвертировать текст при чтении из файла и при записи в файл, функции есть здесь.
Конвертация строк
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.08.2012, 16:08
Помогаю со студенческими работами здесь

Числовые анаграммы
Вам задано натуральное число n (1 ≤ n ≤ 1000000000). Выведите большее число, состоящее из тех же цифр, а, если таковых чисел несколько,...

Анаграммы заданного слова
необходимо составить программу которая напечатает на экране все анограммы слова из 4 букв исходное слово вводится склавиатуры. пример:...

Числа-анаграммы проверить количество
Идеи есть, но на код не ложатся. Вам необходимо написать программу, которая читает целое число n и проверяет, можно ли из него образовать...

Найти и вывести в файл все анаграммы
Условие:Дан текст,который содержит предложения со словами и знаками препинания. Задание:Написать программу WORD.*,которая находит и...

Найти все анаграммы даного числа
Есть число, допустим, 123456789. Надо найти все его анаграммы. Анаграмма - это число, которое содержит те же цифры, что и исходное число,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru