- •«Белгородский государственный национальный исследовательский университет»
- •Кафедра Прикладной информатики и информационных технологий
- •1 Курса группы 12002108
- •Белгород 2022 содержание
- •Введение
- •1 Общая постановка задачи
- •2 Разработка алгоритмов и структур данных
- •VidNum(poleVis, pole, dff)
- •VidNum()
- •3.1 Программирование задачи в консольном варианте
- •3.2 Программирование задачи с использованием экранных форм
- •4 Демонстрация разработанного программного приложения
- •4.1 Демонстрация задачи в консольном варианте
- •4.2 Демонстрация задачи с использованием экранных форм
- •Заключение
- •Список использованных источников
- •Приложение a
- •Приложение b
kZero<9-dff
ind
:= 0
i
:= 0, razmP
kZero
:= 0
kZero
:= 0
ind = rand() % 9
a[i][ind]
= 0VidNum()
+
–
2
5
4
3
1
5
2
4
1
3
a[i][j]
= 0
j
:= 0, razmP
kZero
:= kZero +1
+
–
Выход
Рисунок 2.5 – Блок-схема алгоритма функции vidNum
Переменные, необходимые для реализации алгоритма функции play (процесс игры), представлены в таблице 2.6.
Таблица 2.6 – Описание переменных и типов данных
Название |
Тип |
Описание |
oshib |
Целый – int |
Переменная для счётчика количества ошибок |
digit |
Целый – int |
Переменная для ввода цифры |
i |
Целый – int |
Переменная для индекса строки поля |
j |
Целый – int |
Переменная для индекса столбца поля |
a |
Целый – int |
Локальная переменная для массива |
b |
Целый – int |
Локальная переменная для массива |
health |
Целый – int |
Локальная переменная для количества оставшихся клеток |
hor |
Целый – int |
Переменная для сравнения индексов строк поля |
vert |
Целый – int |
Переменная для сравнения индексов столбцов поля |
Функция play выводит поле, заменяя элементы-нули пробелами. Затем принимает положение клетки и цифру, которую пользователь хочет в неё вписать, пока не будет заполнено всё поле. Если цифра неверная, то увеличивается счётчик ошибок, если верная – клетка заполняется. Блок-схема алгоритма функции play представлена на рисунке 2.6.
play()
oshib
:= 0
health>0
Вывод
1,
2...9;
43 “=“
i
:= 0, razmP
Вывод
i
+ 1 " |"
j
:= 0, razmP
+
–
j=3
или
6
1
8
7
6
2
3
5
4
3
8
7
6
1
2
5
4
+
–
a[i][j]
≠ 0 0
a[i][j]
≠ 0
hor,
vert<1
или
>9
Ввод
hor,
vert
Вывод
43
«-»
Вывод
43
«=»
i=2
или
5
Вывод
« »
Вывод
a[i][j]
без разд.
Вывод
Раздел. и « »
Вывод
a[i][j]
с раздел.
–
+
–
+
+
–
12
9
10
13
11
11
12
10
13
9
Ввод
hor,
vert
Вывод
«Неправильно»
vert:=vert-1
hor
:=hor-1
Ввод
digit
digit
= b[hor][vert]
a[hor][vert]
:= digit
health
:= health-1
Вывод
«Неправильно»
a[hor][vert]
= 0
+
–
+
–
18
17
16
15
14
18
17
16
15
14
oshib
:= oshib+1
Вывод
«Ошибка»
return
oshib
Выход
Рисунок 2.6 – Блок-схема алгоритма функции play
Переменные, необходимые для реализации алгоритмов работы с файлами, представлены в таблице 2.7.
Таблица 2.5 – Описание переменных и типов данных
Название |
Тип |
Описание |
name |
Символьный – char |
Переменная для поиска по имени пользователя |
f |
Целый – int |
Переменная для счётчика количества пользователей с вводимым именем |
i |
Целый – int |
Переменная для индекса строки поля |
j |
Целый – int |
Переменная для индекса столбца поля |
k |
Целый – int |
Переменная дли использования в сортировке |
sc |
Целый – int |
Переменная для счётчика времён пользователей |
mini |
Дробный – float |
Переменная для хранения значения минимума |
timearr |
Целый – int |
Переменная для массива, хранящего времена пользователей |
Функция print считывает все значения из файла, затем выводит их в консоль. Блок-схема алгоритма функции print представлена на рисунке 2.7.
print()
Читать
из файла polzDann.
vrem)
Читать
из файла polzDann.
diff
Читать
из файла polzDann.vrem)
Читать
из файла polzDann.imya
Открыть
tf
Вывод
“Вывод
из файла»
–
+
Не EOF
2
3
1
1
3
2
Вывод
polzDann.imya
Вывод
polzDann.vrem
Вывод
polzDanndiff
Вывод
polzDann.mist
Закрыть
tf
Выход
Рисунок 2.7 – Блок-схема алгоритма функции print
Функция append автоматически дописывает в конец файла данные о текущем завершённом сеансе игры. Блок-схема алгоритма функции append представлена на рисунке 2.8.
append()
Закрыть
tf
Запись
в файл polzDann.vrem
Запись
в файл polzDann.diff
Запись
в файл polzDann.vrem
Запись
в файл polzDann.imya
Открыть
tf
Выход
Рисунок 2.8 – Блок-схема алгоритма функции append
Функция zapros по введённому имени пользователя выводит остальные данные о его сеансе игры. Блок-схема алгоритма функции zapros представлена на рисунке 2.9.
zapros()
Открыть
tf
Вывод
«Запрос»
Ввод
name
f
:= 0
–
+
Не EOF
Читать
из файла polzDann.imya
Читать
из файла polzDann.vrem
3
1
2
3
1
2
Читать
из файла polzDann.diff
Читать
из файла polzDann.mist
polzDann.name
= imya
Вывод
polzDann.imya
Вывод
polzDann.vrem
Вывод
polzDann.diff
Вывод
polzDann.mist
f
:= f +1
–
+
4
4
+
–
f
= 0
Вывод
«Нет польз.»
Выход
Закрыть
tf
Рисунок 2.9 – Блок-схема алгоритма функции zapros
Функция timesort считывает из файла данные о временах игры разных пользователей и записывает их в новый массив. Затем этот массив сортируется по возрастанию и выводится в консоль. Блок-схема алгоритма функции timesort представлена на рисунке 2.10.
timesort()
Открыть
tf
Вывод
«Рейтинг»
sc
:= 0
+
–
Не EOF
Читать
из файла polzDann.vrem
Читать
из файла polzDann.imya)
2
1
3
1
3
2
i
:= 0, sc-1
timearr[sc]
:= polzDann.vrem
sc
:= sc +1
Читать
из файла polzDann.diff
Читать
из файла polzDann.mist)
Выход
Сортировка
timearr
Вывод
timearr[i]
Рисунок 2.10 – Блок-схема алгоритма функции timesort
Таким образом, во втором разделе были разработаны основные алгоритмы работы, определены структуры данных и переменные, необходимые для программной реализации игры судоку.
3 Программная реализация алгоритмов на языке С++
