- •«Белгородский государственный национальный исследовательский университет»
- •Кафедра Прикладной информатики и информационных технологий
- •1 Курса группы 12002108
- •Белгород 2022 содержание
- •Введение
- •1 Общая постановка задачи
- •2 Разработка алгоритмов и структур данных
- •VidNum(poleVis, pole, dff)
- •VidNum()
- •3.1 Программирование задачи в консольном варианте
- •3.2 Программирование задачи с использованием экранных форм
- •4 Демонстрация разработанного программного приложения
- •4.1 Демонстрация задачи в консольном варианте
- •4.2 Демонстрация задачи с использованием экранных форм
- •Заключение
- •Список использованных источников
- •Приложение a
- •Приложение b
1
Ввод
polzDann.imya
numVis:=
chooseDiff()
perestanovka(pole)
dff
:= numVis/9
2
begVrem
:= clock()
Скопировать
pole
в
poleVis
VidNum(poleVis, pole, dff)
nom
:= 0
nom
Ввод
nom
nom
≠ 1
2
Вывод
“Неправ.
ввод”
1
print()
2
zapros()
3
3
3
Конец
3
2
print()
nom
≠ 1
Ввод
nom
nom
1
4
zapros()
Ввод
polzDann.imya
polzDann.mist
:= play(poleVis, pole, 81 - numVis)
poleVyvod(poleVis)
polzDann.vrem
:= (endVrem – begVrem)/1000
append(polzDann.imya,
polzDann.vrem,polzDann.diff, polzDann.mist)
4
endVrem
:= clock()
timesort()
return
0
Рисунок 2.1 – Блок-схема алгоритма функции main
Переменные, необходимые для реализации алгоритма функции poleVyvod (вывод поля с разделителями), представлены в таблице 2.2.
Таблица 2.2 – Описание переменных и типов данных
Название |
Тип |
Описание |
a |
Целый – int |
Локальная переменная для массива |
i |
Целый – int |
Переменная для индекса строки поля |
j |
Целый – int |
Переменная для индекса столбца поля |
ptrA |
Целый – int |
Указатель на массив а |
Переменные, необходимые для реализации алгоритма функции perestanovka (перемешивание столбцов и строк поля), представлены в таблице 2.2.
Таблица 2.3 – Описание переменных и типов данных
Название |
Тип |
Описание |
a |
Целый – int |
Локальная переменная для массива |
begS |
Целый – int |
Переменная для индекса начального элемента района |
endS |
Целый – int |
Переменная для индекса конечного элемента района |
i |
Целый – int |
Переменная для индекса строки и столбца поля |
S |
Целый – int |
Переменная для обмена значениями элементов массива |
povt |
Целый – int |
Переменная для счётчика количества повторений |
Функция poleVyvod выводит элементы поля (двумерного, разделяя между собой районы символами «=» и «||» либо «-» и «|». Блок-схема алгоритма функции poleVyvod представлена на рисунке 2.2.
poleVyvod(a[9][9])
i
:= 0,
razmP
Вывод
a[i][j]
без раздел.
Вывод
a[i][j]
с раздел.
i=3
или
6 или
j=6
j
:= 0,
razmP
+
–
–
Вывод
строки
“=“
Вывод
строки
“-”
i=2
или
5
+
Выход
Рисунок 2.2 – Блок-схема алгоритма функции poleVyvod
perstanovka()
i
:= 0, razmP-1
begS
:= (rand() % 3) * 3
endS
:= begS + (rand() % 2 + 1)
S
:= a[i][begS]
a[i][begS]
:= a[i][endS]
a[i]
[endS]:= S
povt
:= 0,
1000
9
7
5
9
7
5
S
:= a[begS][i]
a[begS]
[i] := a[endS] [i]
a[endS][i]
:= S
i
:= 0, razmP-1
Выход
Рисунок 2.3 – Блок-схема алгоритма функции perestanovka
Переменные, необходимые для реализации алгоритма функции chooseDiff (выбор сложности), представлены в таблице 2.4.
Таблица 2.4 – Описание переменных и типов данных
Название |
Тип |
Описание |
flag |
Логический – bool |
Локальная переменная для массива |
nV |
Целый – int |
Переменная для количества заполняемых клеток |
Переменные, необходимые для реализации алгоритма функции vidNum (заполнение массива 0), представлены в таблице 2.5.
Таблица 2.5 – Описание переменных и типов данных
Название |
Тип |
Описание |
kZero |
Целый – int |
Локальная переменная для массива |
ind |
Целый – int |
Переменная для количества заполняемых клеток |
i |
Целый – int |
Переменная для индекса строки поля |
j |
Целый – int |
Переменная для индекса столбца поля |
a |
Целый – int |
Локальная переменная для массива |
b |
Целый – int |
Локальная переменная для массива |
dff |
Целый – int |
Переменная для количества нулей |
Функция chooseDiff в зависимости от введённой пользователем цифры определяется сложность и возвращает число клеток, которое будет заполнено (27 или 36). Блок-схема алгоритма функции chooseDiff представлена на рисунке 2.4.
chooseDiff()
flag
:= false
flag
= false
–
+
Ввод
polzDann.diff
polzDann.diff
2
1
nV
:=27
flag := true
nV
:=36
flag := true
Вывод
«Ошибка»
Выход
Рисунок 2.4 – Блок-схема алгоритма функции chooseDiff
Функция vidNum в зависимости от выбранной сложности заменяет элементы «базового поля» нужным количеством нулей (пятью или шестью) в каждой строке. Блок-схема алгоритма функции vidNum представлена на рисунке 2.5.
