Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГоловковИ.Е._12002108_Курсовая_работа.docx
Скачиваний:
5
Добавлен:
26.06.2024
Размер:
2.5 Mб
Скачать

VidNum()

kZero<9-dff

ind := 0

i := 0, razmP

kZero := 0

kZero := 0 ind = rand() % 9

a[i][ind] = 0

+

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 Программная реализация алгоритмов на языке С++