- •Рыбинск 2005
- •1 Постановка задачи
- •2 Спецификация
- •3 Метод решения
- •Для этого необходимо
- •4 Организация данных
- •5 Описание процедур и функций
- •6 Описание алгоритма
- •6.1 Общий алгоритм
- •6.2 Частные алгоритмы
- •6.2.1 Алгоритм проверки возможности составления кроссворда
- •6.2.3 Алгоритм поиска слов в шаблоне
- •7 Методика тестирования
- •Имя файла
- •8 Текст программы
- •9 Результаты тестирования.
- •10 Литература
Образец оформления курсовой работы по дисциплине ПРОГРАММИРОВАНИЕ НА ЯВУ
3 Метод решения
Задачу о составлении кроссворда можно разбить на три блока:
1.блок ввода
2.блок поиска решения
3.блок вывода
Ввод данных можно организовать двумя способами:
1)из файла;
Для этого необходимо
• определить структуру входного файла:
1 строка – размер матрицы – шаблона (N) (целое число);
2строка – 1-ая строка матрицы из ‘_’ и ‘#’ (без пробелов и знаков препинания);
3строка - 2-ая строка матрицы из ‘_’ и ‘#’;
....................................................................
N+1 строка – N-я строка матрицы из ‘_’ и ’#’; N+2 строка – первое слово из множества слов; N+3 строка – второе слово и т.д.
•организовать ввод имени файла:
если пользователь ввел имя несуществующего файла или структура файла не соответствует требуемой, программа должна выдать сообщение об ошибке.
•читать данные из файла.
2)в режиме диалога (ввод с клавиатуры).
Для организации ввода данных с клавиатуры необходимо:
•ввести размер матрицы;
•ввести матрицу;
•ввести количество слов;
•ввести слова.
Для проверки возможности составления кроссворда по заданному шаблону и набору слов необходимо выполнить инициализацию ряда переменных: массив, в который будет записан вариант кроссворда, и массив слов шаблона кроссворда. В каждую ячейку массива варианта кроссворда записывается символ слова и номер слова, из которого взят символ, если ячейка располагается на пересечении двух слов, то номер слова соответствует первому вписанному в эту ячейку символу слова. При инициализации все ячейки заполняются символами ‘#’ и номерами 0. Массив слов шаблона кроссворда представляет собой одномерный массив, в каждую ячейка которого записывается номер слова по вертикали, номер слова по горизонтали, глина слова, ориентация слова (слово расположено по вертикали или по горизонтали). При инициализации данного массива просматривается шаблон кроссворда: по строкам (ищутся все слова,
Образец оформления курсовой работы по дисциплине ПРОГРАММИРОВАНИЕ НА ЯВУ
расположенные по горизонтали) и по столбцам (ищутся все слова, расположенные по вертикали).
После этапа инициализации выполняется этап проверки возможности составления кроссворда.
1Проверить, хватит ли слов для заполнения кроссворда: Для этого необходимо подсчитать количество слов в кроссворде и количество слов из заданного множества с учетом их длины. Если количество заданных слов некоторой длины меньше, чем количество слов в кроссворде этой длины, то кроссворд составить невозможно.
2Если проверка по п.1 завершилась удачно, необходимо попытаться вписать слова в нулевые ячейки матрицы. Для этого необходимо определить первое незаполненное слово в кроссворде: просматриваем массив слов шаблона кроссворда от 1 до количества слов в шаблоне; найти в множестве слов незанятое слово подходящей длины и попытаться вписать в шаблон. Слово возможно вписать в шаблон, если оно не содержит пересечений с другими словами или если пересечения с внесенными словами не приводят к ошибке, то есть символы слов на пересечении совпадают. Если слово невозможно вписать в шаблон, то ищем следующее подходящее по длине слово. Если слов данной длины больше нет, то возвращаемся на слово назад, то есть, заменяем последнее вписанное слово в шаблоне нулями, помечаем это слово как свободное, ищем другое слово заданной длины.
3Если перебраны все варианты, а кроссворд остался незаполненным, то составить кроссворд из такого набора слов и такого шаблона кроссворда невозможно.
Вывод результата предполагает либо вывод одного варианта заполнения кроссворда, либо сообщение о том, что кроссворд составить невозможно.
