Помощь - Поиск - Пользователи - Календарь
Полная версия: Операции над векторами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
nocens
Реализовать набор подпрограмм для выполнения следующих операций над векторами: а) сложение; б) вычитание; в) скалярное умножение векторов; г) умножение вектора на число; д) нахождение длины вектора.

1) Дан массив A – массив векторов. Отсортировать его в порядке убывания длин векторов.

2) С помощью датчика случайных чисел сгенерировать 2N целых чисел. N пар этих чисел задают N точек координатной плоскости. Вывести номера тройки точек, которые являются координатами вершин треугольника с наибольшим углом.
volvo
4 задачи и куча вопросов

Ничего не напоминает (задание №3) ?
trminator
2)
Генерим два массива - x[N], y[N] (или один массив с записями типа TPoint, каких тут на форуме много развелось)

По трем точкам смотрим треугольник. Длины его сторон без проблем вычисляются через координаты точек, углы треугольника (точнее, косинусы углов) вычисляются через теорему косинусов. Косинус максимального угла - минимален, то есть можно без арккосинуса обойтись, на косинусы смотреть [Достаточно вычислить два угла, третий определяется по ним как 180 - alpha - beta. Можно ли в таком случае обойтись без арккосинуса - хз, подумать надо]

Перебираем все треугольники примерно в таком духе:
for i := 1 to n-2 do
   for j := i+1 to n-1 do
       for k := j+1 to n do
       begin
           { тут смотрим треугольник с точками (x[i], y[i]), (x[j], y[j]), (x[k], y[k]) -
вычисляем все его углы, запоминаем максимальный и тройку [i,j,k],
на которой достигнут максимум }
       end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.