Кодирование.
Разработка программы для создания кроссвордов
Класс tStringList представляет собой список строк и ассоциированных с каждой строкой указателя на объект. В данном случае вместо указателя хранится совместимое по типу с указателем 4-х байтного целочисленного числа Integer, значением которого в программе является количество встречаемых слов в тексте. Этот класс прост в работе. Особым его достоинством является быстрый поиск по содержимому. Поиск… Читать ещё >
Кодирование. Разработка программы для создания кроссвордов (реферат, курсовая, диплом, контрольная)
В Delphi 7 имеется специальный класс tIniFile, максимально упрощающий программистам работу с файлами такого формата. При создании данного класса необходимо указать имя файла. По умолчанию, если не указывать путь к файлу, подставляется путь к системной директории windows. Данный класс предоставляет набор операций по чтению и записи параметров, максимально упрощая работу программиста. Значения параметров могут записываться и считываться в формате строки, целого, дробного или логического значения. Также допустима интерпретация как дата и время, но данный подход снижает показатели переносимости из-за возможных различных форматов даты времени на различных компьютерах. Программисту также предоставляются методы по работе с секциями в целом, а также по проверке существования значений и секций.
Файлы с конфигурацией кроссворда будем называть файлом схемы (*.scm). В таблице 1 представлены секции и ключи этого файла.
Таблица 1 — Секции и ключи.
Секция. | Ключ. | Пример | Описание. |
[main]. | width. | Ширина кроссворда. | |
height. | высота. | ||
words. | количество слов. | ||
[matrix]. | 1,2…N. | шаблон кроссворда.
| |
[words]. | 2,1,v. | слова. I=X, Y, N. Iномер от 1 до words. X, Y — координаты первого символа слова. N — направление v-вертикальное h-горизонтальное. |
Класс tStringList представляет собой список строк и ассоциированных с каждой строкой указателя на объект. В данном случае вместо указателя хранится совместимое по типу с указателем 4-х байтного целочисленного числа Integer, значением которого в программе является количество встречаемых слов в тексте. Этот класс прост в работе. Особым его достоинством является быстрый поиск по содержимому. Поиск может осуществляться как по строкам, так и по указателю. Методы SaveToFlile и LoadFomFile позволяют соответственно сохранить и загрузить содержимое в файл.
Будем использовать этот файл для работы со словарем.
Для реализации основной функции подбора вариантов заполнения кроссворда разработана процедура interior.
//основная процедура рекурсивного перебора вариантов.
//на входе список уже вставленных слов.
//и номер вставляемого слова.
procedure TFrmMain. interior (used:tStringList;CurWord:integer);
var i: integer;
begin.
if endOfFind then exit; //выход если юзер не хочет больше.
if CurWord=MaxWords+1 then //все слова вставлены.
begin.
inc (FindCount);
OutKrossw (used); // можно выводить.
exit; // да и нечего больше вставлять.
end;
for i:=0 to words. Count-1 do //по всем словам из словаря слов.
begin.
if used. IndexOf (words[i])-1 then continue; //в одном кроссворде одно слово дважды не встречается.
used.InsertObject (0,words[i], pointer (CurWord)); //вставим в начало списка используемых слов.
if valid (used) then //проверка на правильность.
interior (used, CurWord+1); //прошло-ищем следующее слово.
if endOfFind then exit; //выход если не надо больше.
used.delete (0); //теперь удалим последнее слово, т.к. на его место в следующем обороте.
end; //цикла вставим новое.
end;
На рисунке 1 представлена блок схема алгоритмов этой процедуры.
автоматизация кроссворд программирование.