- •Лабораторная работа №6 Использование структур на примере решения задач аналитической геометрии
- •Пример выполнения лабораторной работы
- •1. Математическая постановка задачи.
- •2. Описание методов решения.
- •3. Геометрическое решение.
- •4. Анализ структур данных, выбранных для реализации алгоритма.
- •5. Постановка задачи для алгоритма.
- •Теоретический материал по теме «Аналитическая геометрия»
4. Анализ структур данных, выбранных для реализации алгоритма.
Входные данные.
Количество точек nN, поэтому в алгоритме представляется целым типом:
n:цел.
Прежде чем рассматривать представление множества точек, рассмотрим представление одной точки. Поскольку координаты точки принадлежат множеству R, то им соответствует вещественный тип данных. Координаты одной точки можно представить:
а) как две отдельные переменные:
х,у: вещ.;
б) как запись:
точка = запись (х,у:вещ.)
Множество точек можно представить следующим образом.
1. Для хранения используется набор отдельных переменных:
а) 2*n переменных вещественного типа:
х1,х2,х3...хn,у1,у2,у3...уn:вещ.
б) n переменных типа «точка»:
t1,t2,t3...tn:точка.
Недостаток этого способа – невозможность автоматизации обработки при большом количестве точек.
2. Для хранения используется один или несколько массивов, что позволяет автоматизировать обработку при большом количестве точек:
а) х,у: массив [n] вещ.
б) t: массив [n] типа «точка».
Достоинство способов а) и б)– мнемоничность переменных.
в) t: массив[n][2]вещ.
t[i][1] соответствует текущей координате х, t[i][2] – текущей координате у.
Недостаток этого способа– название элемента не отражает его смысл.
Недостаток представления множества в виде массива элементов – большой объем памяти, используемый для хранения элементов.
3. На каждом шаге обработки можно хранить только текущие три точки множества (либо в виде переменных вещественного типа, либо в виде записей типа «точка»). Достоинство – малый объем занимаемой памяти. Однако, поскольку обработка точек предполагает нелинейный перебор (каждая точка с каждой без учета повторений), то при обработке очередной тройки точек пришлось бы заново вводить ранее введенные значения, что ухудшает работу алгоритма, снижает быстродействие и повышает вероятность возникновения ошибок при вводе данных.
Выходные данные.
Количество треугольников N, поэтому в алгоритме представляется целым типом:
K: цел.
Промежуточные данные.
Согласно выбранному методу решения, для определения параметров текущего треугольника необходимо вычислить следующие величины:
- длины сторон треугольника;
- полупериметр треугольника;
- углы треугольника.
Все эти величины принадлежат множеству действительных чисел, поэтому представляются вещественным типом.
1. Эти данные можно хранить в виде соответствующих массивов из n элементов:
а,b,c: массив [n] вещ. { длины сторон треугольников };
p: массив [n] вещ. { полупериметры треугольников};
angle_A, angle_B, angle_C: массив [n] вещ. { углы треугольников }.
Недостаток – необходим большой объем памяти для хранения данных.
2. Поскольку при обработке текущего треугольника данные о параметрах предыдущих треугольников нам не нужны, то логично хранить только данные одного треугольника:
а,b,c: вещ. { длины сторон текущего треугольника };
p: вещ. { полупериметр текущего треугольника };
angle_A, angle_B, angle_C: вещ. { углы текущего треугольника }.
Достоинство – небольшой объем памяти, необходимый для хранения данных.
