- •Рыбинск 2005
- •1 Постановка задачи
- •2 Спецификация
- •3 Метод решения
- •Для этого необходимо
- •4 Организация данных
- •5 Описание процедур и функций
- •6 Описание алгоритма
- •6.1 Общий алгоритм
- •6.2 Частные алгоритмы
- •6.2.1 Алгоритм проверки возможности составления кроссворда
- •6.2.3 Алгоритм поиска слов в шаблоне
- •7 Методика тестирования
- •Имя файла
- •8 Текст программы
- •9 Результаты тестирования.
- •10 Литература
Образец оформления курсовой работы по дисциплине ПРОГРАММИРОВАНИЕ НА ЯВУ
6.2 Частные алгоритмы
6.2.1Алгоритм проверки возможности составления кроссворда
1.Инициализация массива варианта построения кроссворда (в каждую ячейку в поле ch заносим символ ‘#’, в поле numberWord – значение 0).
2.Подсчет количества слов определенной длины в шаблоне и в списке.
3.Если для заданной длины слов в списке меньше, чем слов в шаблоне, то кроссворд составить невозможно, иначе слов для составления кроссворда хватает.
4.Если слов хватает, то проверить возможность вписать слова в ячейки.
6.2.2Алгоритм проверки возможности вписать слова в шаблон
i:=1
j:=0
пока (i<=num) и (i>0) вып
j:=номер не меньше 1+j слова из списка длины Listi.dlina если j<>0 то
поместить i в стек p:=true wordsj.pr:=true
если (krwordList[i].InI,List[i].InJ.NumberWord=0) или (krwordList[i].InI,List[i].InJ.ch=wordsj.word1) то
krwordList[i].InI,List[i].InJ.ch:=wordsj.word1
если krwordList[i].InI,List[i].InJ.NumberWord=0 то krwordList[i].InI,List[i].InJ.NumberWord:=j
кон_если l:=1
пока (listi.dlina>l) и p вып если Listi.Horizont то
если (krwordList[i].InI,List[i].InJ+l.NumberWord=0) или (krwordList[i].InI,List[i].InJ+l.ch=wordsj.word1+l) то krwordList[i].InI,List[i].InJ+l.ch:=wordsj.word1+l если krwordList[i].InI,List[i].InJ+l.NumberWord=0 то
krwordList[i].InI,List[i].InJ+l.NumberWord:=j
кон_если иначе p:=false
кон_если иначе
если (krwordList[i].InI+l,List[i].InJ.NumberWord=0) или (krwordList[i].InI+l,List[i].InJ.ch=wordsj.word1+l ) то
krwordList[i].InI+l,List[i].InJ.ch:=wordsj.word1+l если krwordList[i].InI+l,List[i].InJ.NumberWord=0 то
Образец оформления курсовой работы по дисциплине ПРОГРАММИРОВАНИЕ НА ЯВУ
krwordList[i].InI+l,List[i].InJ.NumberWord:=j
кон_если иначе p:=false
кон_если кон_если l:=l+1
кон_пока иначе p:=false
кон_если если p то
i:=i+1
j:=0
иначе
извлечь номер слова из стека в переменнуюj wordsj.pr:=false
l:=1
пока l<= k вып z:=1
пока z<= k вып
если krwordl,z.numberWord=j то krwordl,z.numberWord:=0
кон_если z:=z+1
кон_пока l:=l+1
кон_пока l:=0;
кон_если иначе
извлечь из стека номер слова в переменную j wordsj.pr:=false
l:=1
пока l<= k вып z:=1
пока z<= k вып
если krwordl,z.numberWord=j то krwordl,z.numberWord:=0
кон_если z:=z+1
кон_пока l:=l+1
кон_пока
i:=i-1
Образец оформления курсовой работы по дисциплине ПРОГРАММИРОВАНИЕ НА ЯВУ
l:=0
кон_если кон_пока
6.2.3 Алгоритм поиска слов в шаблоне
num:=0
i:=1
пока i<=k вып w:=false len:=0
j:=1
пока j <= k вып
если (kwordi,j=0) и not w то num:=num+1
Listnum.InI:=i
Listnum.InJ:=j Listnum.Horizont:=true w:=true;
кон_если
если kwordi,j=0 то len:=len+1
кон_если
если (kwordi,j=1) и w то если len>1 то
Listnum.Dlina:=len иначе num:=num-1
кон_если len:=0 w:=false
кон_если j:=j+1
кон_пока если w то если len>1 то
listnum.dlina:=len
иначе num:=num-1
кон_если кон_если i:=i+1
кон_пока j:=1
пока j<=k вып
Образец оформления курсовой работы по дисциплине ПРОГРАММИРОВАНИЕ НА ЯВУ
w:=false
len:=0
i:=1
пока i <= k вып
если (kwordi,j=0) и not w то num:=num+1
Listnum.InI:=i
Listnum.InJ:=j Listnum.Horizont:=false w:=true;
кон_если
если kwordi,j=0 то len:=len+1
кон_если
если (kwordi,j=1) и w то если len>1 то
Listnum.Dlina:=len иначе num:=num-1
кон_если len:=0 w:=false
кон_если i:=i+1
кон_пока если w то если len>1 то
listnum.dlina:=len
иначе num:=num-1
кон_если кон_если j:=j+1
кон_пока
