Перемена местами букв в слове и поиск совпадений в словаре - Pascal
Формулировка задачи:
С горем пополам написал код для перестановки букв в введенном слове. Как сделать поиск полученных вариантов в словаре слов? Словарь русских слов в тхт формате.
Например: ввожу слово beer
Выдает варинты:
beer
bere
bree
eber
ebre
eebr
eerb
erbe
ereb
rbee
rebe
reeb. Нужно проверить есть ли какой нибудь вариант в словаре.
var a, b: array[1..255] of integer; s:string; len, i:integer; procedure rec(t:integer); var i:integer; begin if t>len then begin for i:=1 to len do write(chr(b[i])); writeln(); Exit; end; for i:=1 to 255 do if a[i]>0 then begin b[t]:=i; dec(a[i]); rec(t+1); inc(a[i]); end; end; begin writeln('Введите строку'); read(s); len:=Length(s); for i:=1 to len do inc(a[ord(s[i])]); rec(1); end.
Решение задачи: «Перемена местами букв в слове и поиск совпадений в словаре»
textual
Листинг программы
const DictName='dict-ru.txt'; function DictFind(const s: String): Boolean; var f: Text; t: String; begin Assign(f,DictName); Reset(f); t:=''; while not SeekEoF(f) and (t<s) do ReadLn(f,t); Close(f); DictFind:=t=s; end;
Объяснение кода листинга программы
- Объявляется константа
DictName
со значениемdict-ru.txt
, предположительно содержащая название файла словаря. - Объявляется функция
DictFind
с параметромs
типа String, которая возвращает значение типа Boolean. - Внутри функции создается переменная
f
типа Text (для работы с файлом) и переменнаяt
типа String (для хранения данных из файла). - Происходит присваивание файла с именем
DictName
к переменнойf
, после чего файл открывается для чтения. - Переменной
t
присваивается пустая строка. - Запускается цикл, который будет читать строки из файла пока файл не достигнет конца или пока строка из файла
t
не станет больше или равна строкеs
. - После выхода из цикла файл закрывается.
- Функция возвращает значение
t=s
, то есть результат проверки на равенство междуt
иs
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д