На бирже курсовых и дипломных проектов можно найти образцы готовых работ или получить помощь в написании уникальных курсовых работ, дипломов, лабораторных работ, контрольных работ, диссертаций, рефератов. Так же вы мажете самостоятельно повысить уникальность своей работы для прохождения проверки на плагиат всего за несколько минут.

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


Курсовик РАЗРАБОТКА ПРОГРАММЫ АВТОМАТИЧЕСКОГО СОСТАВЛЕНИЯ КРОССВОРДА

Информация:

Тип работы: Курсовик. Предмет: Информатика. Добавлен: 14.5.2014. Сдан: 2012. Страниц: 42. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Содержание

1 Постановка задачи 3
2 Спецификация 4
3 Метод решения 5
4 Организация данных 7
5 Описание процедур и функций 8
6 Описание алгоритма 9
6.1 Общий алгоритм 9
6.2 Частные алгоритмы 10
6.2.1 Алгоритм проверки возможности составления кроссворда 10
6.2.3 Алгоритм поиска слов в шаблоне 12
7 Методика тестирования 14
8 Текст программы 16
9 Результаты тестирования. 29
10 Литература 31

1 Постановка задачи
Пусть заданы конечное множество слов и таблица NxN, в некоторые клетки которой записан символ #.
Составить кроссворд, размещая буквы слов в свободные клетки заданной таблицы-шаблона.
Если по заданным таблице и множеству слов составить кроссворд невозможно, вывести соответствующее сообщение.

2 Спецификация

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

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 Если перебраны все варианты, а кроссворд остался незаполненным, то составить кроссворд из такого набора слов и такого шаблона кроссворда невозможно.
Вывод результата предполагает либо вывод одного варианта заполнения кроссворда, либо сообщение о том, что кроссворд составить невозможно.
4 Организация данных

Размер матрицы шаблона кроссворда:
константа N целого типа.
Для хранения шаблона кроссворда используется двумерный массив:
kword : array[1..N,1..N] of masWord;
Для хранения множества слов - одномерный массив слов:
words : array[1..100] of masWord;
Тип masWord представлет собой запись:
masWord = record
number:integer; - номер слова
word : string[30]; - слово
pr : Boolean - признак использования (true - вписано в кроссворд)
end;
Для подготовки варианта заполнения используется массив:
krword : mas;
Тип mas - двумерный массив:
mas = array[1..N, 1..N] of masKWord;
Каждый элемент массива представляет собой запись:
masKWord = record
ch : char; - символ из слова
numberWord : integer - номер слова
end;
Для организации удобного поиска незанятых позиций в кроссворде организован массив слов кроссворда:
List : array [1..N*N] of ListWord;
Каждый элемент массива - запись.
Тип ListWord:
ListWord = record
InI, InJ : integer; - номер по вертикали, номер по горизонтали
Dlina : integer; - длина
Horizont : boolean; - ориентация (true - по горизонтали)
end;
Для организации возвратов необходимо организовать стек использованных слов. В стек помещается номер вписанного в шаблон слова. Организуем динамический стек:
top : ref;
Тип ref:
ref = ^z;
z = record
next : ref;
NumberWord : integer;
end;
num - количество слов в шаблоне

5 Описание процедур и функций

Procedure InitMenu; - процедура инициализации верхней строки меню.
function Ini........

10 Литература
1. Вирт Н. Алгоритмы + структуры = программы. М.: Мир, 1985.
2. Касьянов В.Н., Евстигнеев В.А. Графы в программировании: обработка, визуализация и применение. - СПб.: БХВ-Петербург, 2003. - 1104 с.
3. Фаронов В.В. Программирование на персональных ЭВМ в среде Турбо-Паскаль. - М.: Изд-во МГТУ, 1990. - 446 с.
4. Шаров В.Г. Введение в программирование: Учебное пособие. - Рыбинск: РГАТА, 2004. - 64 с.



Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть похожие работы


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