Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ot4et.docx
Скачиваний:
5
Добавлен:
28.09.2019
Размер:
168.53 Кб
Скачать

3 Обоснование выбора структур данных

Задача на исследование треугольников.

В этой задаче я использую только статические структуры данных, т.к. их было достаточно для реализации необходимого алгоритма. Координаты точек и векторов я храню в одномерном массиве из двух элементов (Рисунок 1).

Рисунок 1- Запись вектора через массив

Игра «Сапер».

Если посмотреть на игровое поле игры «Сапер», то сразу появляются ассоциации с матрицей, которую легко реализовать в форме двумерного массива (Рисунок 2).

Рисунок 2- Схожесть поля игры и матрицы

В виду схожести, я организовал игровое поле в виде двумерного массива, элементы которого элементы которого – бомбы (*) и числа, указывающие на количество бомб вокруг.

4 Описание алгоритма решения задачи

Задача на исследование треугольников.

Алгоритм данной программы прост, в нем не присутствуют какие-либо процедуры.

  1. Осуществляется ввод координат точек.

  2. Две точки подставляются в уравнение прямой, и проверяется принадлежность третьей точки этой прямой. Данный шаг повторяется со всеми комбинациями точек.

  3. Если хоть одна точка принадлежит прямой – выводится сообщение о том, что данная фигура не является треугольником и программа завершается (пункт 7). Если совпадений нет, выводится сообщение о том, что фигура является треугольником и программа переходит к следующему шагу.

  4. Составляются три вектора, соответствующих сторонам треугольника. Вычисляется их длина и сравнивается друг с другом.

  5. Если было одно совпадение длины, то треугольник является равнобедренным. Если два совпадения, то равносторонним. Если же совпадений нет, программа выводит сообщение, что он треугольник не равнобедренный и не равносторонний.

  6. Поочередно скалярно умножаем векторы. Если хоть одно произведение равно 0, то треугольник является прямоугольным и программа выводит соответствующее сообщение.

  7. Программа спрашивает, повторить ли работу. В зависимости от ответа, она повторяется или завершается.

Игра «Сапер».

Для реализации этой игры я использую текстовый режим. Для игрового поля я использую два массива: A и B. В массиве A хранится все игровое поле, этот массив за всю игру не меняется. Массив B используется для вывода на экран закрытого игрового поля (изначально), и постепенно открывающегося.

  1. В массиве A с помощью процедуры случайным образом генерируется расположение мин на поле. Остальным ячейкам присваивается значение, соответствующее количеству мин вокруг. Массиву В присваивается «закрытое значение», соответствующее закрытому полю (#).

  2. На экран выводится игровое поле (массив В) с помощью процедуры вывода поля, и предлагается ввести координаты ячейки, которую следует открыть.

  3. После считывания координат, следующая процедура выясняет, какое значение соответствует этой ячейке.

  4. Если пользователь открыл бомбу - выводится сообщение о том, что он проиграл, показывается открытое поле ( массив А), и программа завершает работу (переходит к пункту 6). Если пользователь открыл ячейку с числом, ячейке с закрытым массивом (В) присваивается это число, игровое поле обновляется. Если же попалась пустая ячейка (со значением 0), то она открывается и следом рекурсивно открываются все соседние ячейки (массиву B присваивается «пустое значение»).

  5. Если пользователь открыл не все безопасные ячейки (без бомб), программа повторяет шаг 2. Иначе - выводит сообщение о победе и переходит к концу программы.

  6. Программа спрашивает, повторить ли работу. В зависимости от ответа, она повторяется или закрывается.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]