Перемена местами букв в слове и поиск совпадений в словаре - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д