3 Обоснование выбора структур данных
Задача на исследование треугольников.
В этой задаче я использую только статические структуры данных, т.к. их было достаточно для реализации необходимого алгоритма. Координаты точек и векторов я храню в одномерном массиве из двух элементов (Рисунок 1).
Рисунок 1- Запись вектора через массив
Игра «Сапер».
Если посмотреть на игровое поле игры «Сапер», то сразу появляются ассоциации с матрицей, которую легко реализовать в форме двумерного массива (Рисунок 2).
Рисунок 2- Схожесть поля игры и матрицы
В виду схожести, я организовал игровое поле в виде двумерного массива, элементы которого элементы которого – бомбы (*) и числа, указывающие на количество бомб вокруг.
4 Описание алгоритма решения задачи
Задача на исследование треугольников.
Алгоритм данной программы прост, в нем не присутствуют какие-либо процедуры.
Осуществляется ввод координат точек.
Две точки подставляются в уравнение прямой, и проверяется принадлежность третьей точки этой прямой. Данный шаг повторяется со всеми комбинациями точек.
Если хоть одна точка принадлежит прямой – выводится сообщение о том, что данная фигура не является треугольником и программа завершается (пункт 7). Если совпадений нет, выводится сообщение о том, что фигура является треугольником и программа переходит к следующему шагу.
Составляются три вектора, соответствующих сторонам треугольника. Вычисляется их длина и сравнивается друг с другом.
Если было одно совпадение длины, то треугольник является равнобедренным. Если два совпадения, то равносторонним. Если же совпадений нет, программа выводит сообщение, что он треугольник не равнобедренный и не равносторонний.
Поочередно скалярно умножаем векторы. Если хоть одно произведение равно 0, то треугольник является прямоугольным и программа выводит соответствующее сообщение.
Программа спрашивает, повторить ли работу. В зависимости от ответа, она повторяется или завершается.
Игра «Сапер».
Для реализации этой игры я использую текстовый режим. Для игрового поля я использую два массива: A и B. В массиве A хранится все игровое поле, этот массив за всю игру не меняется. Массив B используется для вывода на экран закрытого игрового поля (изначально), и постепенно открывающегося.
В массиве A с помощью процедуры случайным образом генерируется расположение мин на поле. Остальным ячейкам присваивается значение, соответствующее количеству мин вокруг. Массиву В присваивается «закрытое значение», соответствующее закрытому полю (#).
На экран выводится игровое поле (массив В) с помощью процедуры вывода поля, и предлагается ввести координаты ячейки, которую следует открыть.
После считывания координат, следующая процедура выясняет, какое значение соответствует этой ячейке.
Если пользователь открыл бомбу - выводится сообщение о том, что он проиграл, показывается открытое поле ( массив А), и программа завершает работу (переходит к пункту 6). Если пользователь открыл ячейку с числом, ячейке с закрытым массивом (В) присваивается это число, игровое поле обновляется. Если же попалась пустая ячейка (со значением 0), то она открывается и следом рекурсивно открываются все соседние ячейки (массиву B присваивается «пустое значение»).
Если пользователь открыл не все безопасные ячейки (без бомб), программа повторяет шаг 2. Иначе - выводит сообщение о победе и переходит к концу программы.
Программа спрашивает, повторить ли работу. В зависимости от ответа, она повторяется или закрывается.
