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

1

Ввод polzDann.imya

numVis:= chooseDiff()

perestanovka(pole)

dff := numVis/9

VidNum(poleVis, pole, dff)

2

begVrem := clock()

Скопировать pole в poleVis

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()

Функция perestanovka многократно перемешивает между собой столбцы и строки поля в пределах района. Блок-схема алгоритма функции perestanovka представлена на рисунке 2.3.

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.