Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Метод решения

Читайте также:
  1. frac34; Методические основы идентификации типа информационного метаболизма психики.
  2. I . ОРГАНИЗАЦИОННО - МЕТОДИЧЕСКИЙ РАЗДЕЛ
  3. I. Организационно-методические указания
  4. I. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЙ РАЗДЕЛ
  5. I. Флагелляция как метод БДСМ
  6. II. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
  7. II. Методы защиты коммерческой тайны.

Рыбинск 2010


Содержание

 

1. Постановка задачи. 3

2. Метод решения. 4

3. Организация данных. 6

4. Описание процедур и функций. 7

5. Разработка алгоритма. 8

5.1 Общий алгоритм. 8

5.2 Частные алгоритмы.. 8

5.2 Частные алгоритмы.. 9

5.2.1 Алгоритм проверки возможности составления кроссворда. 9

5.2.3 Алгоритм поиска слов в шаблоне. 11

6. Тестирование. 13

6.1 Методика тестирования. 13

6.2 Результаты тестирования. 15

7. Руководство пользователя. 17

Литература. 18

Приложение. Текст программы.. 19


Постановка задачи

Пусть заданы конечное множество слов и таблица N*N, в некоторые клетки которой записан символ #.

Составить кроссворд, размещая буквы слов в свободные клетки заданной таблицы-шаблона.

Если по заданным таблице и множеству слов составить кроссворд невозможно, вывести соответствующее сообщение.

 


Метод решения

 

Задачу о составлении кроссворда можно разбить на три блока:

1. блок ввода

2. блок поиска решения

3. блок вывода

 

Ввод данных можно организовать двумя способами:

1) из файла;

Для этого необходимо

· определить структуру входного файла:

1 строка – размер матрицы – шаблона (N) (целое число);

2 строка – 1-ая строка матрицы из ‘_’ и ‘#’ (без пробелов и знаков препинания);

3 строка - 2-ая строка матрицы из ‘_’ и ‘#’;

....................................................................

N+1 строка – N-я строка матрицы из ‘_’ и ’#’;

N+2 строка – первое слово из множества слов;

N+3 строка – второе слово и т.д.

· организовать ввод имени файла:

если пользователь ввел имя несуществующего файла или структура файла не соответствует требуемой, программа должна выдать сообщение об ошибке.

· читать данные из файла.

2) в режиме диалога (ввод с клавиатуры).

Для организации ввода данных с клавиатуры необходимо:

· ввести размер матрицы;

· ввести матрицу;

· ввести количество слов;

· ввести слова.

Для проверки возможности составления кроссворда по заданному шаблону и набору слов необходимо выполнить инициализацию ряда переменных: массив, в который будет записан вариант кроссворда, и массив слов шаблона кроссворда. В каждую ячейку массива варианта кроссворда записывается символ слова и номер слова, из которого взят символ, если ячейка располагается на пересечении двух слов, то номер слова соответствует первому вписанному в эту ячейку символу слова. При инициализации все ячейки заполняются символами ‘#’ и номерами 0. Массив слов шаблона кроссворда представляет собой одномерный массив, в каждую ячейка которого записывается номер слова по вертикали, номер слова по горизонтали, глина слова, ориентация слова (слово расположено по вертикали или по горизонтали). При инициализации данного массива просматривается шаблон кроссворда: по строкам (ищутся все слова, расположенные по горизонтали) и по столбцам (ищутся все слова, расположенные по вертикали).

После этапа инициализации выполняется этап проверки возможности составления кроссворда.

1 Проверить, хватит ли слов для заполнения кроссворда: Для этого необходимо подсчитать количество слов в кроссворде и количество слов из заданного множества с учетом их длины. Если количество заданных слов некоторой длины меньше, чем количество слов в кроссворде этой длины, то кроссворд составить невозможно.

2 Если проверка по п.1 завершилась удачно, необходимо попытаться вписать слова в нулевые ячейки матрицы. Для этого необходимо определить первое незаполненное слово в кроссворде: просматриваем массив слов шаблона кроссворда от 1 до количества слов в шаблоне; найти в множестве слов незанятое слово подходящей длины и попытаться вписать в шаблон. Слово возможно вписать в шаблон, если оно не содержит пересечений с другими словами или если пересечения с внесенными словами не приводят к ошибке, то есть символы слов на пересечении совпадают. Если слово невозможно вписать в шаблон, то ищем следующее подходящее по длине слово. Если слов данной длины больше нет, то возвращаемся на слово назад, то есть, заменяем последнее вписанное слово в шаблоне нулями, помечаем это слово как свободное, ищем другое слово заданной длины.

3 Если перебраны все варианты, а кроссворд остался незаполненным, то составить кроссворд из такого набора слов и такого шаблона кроссворда невозможно.

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


Дата добавления: 2015-12-08; просмотров: 44 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.007 сек.)