Модуль для операций с векторами - Pascal
Формулировка задачи:
Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над векторами на плоскости: 1) сложение; 2) вычитание; 3) скалярное умножение векторов; 4) умножение вектора на число; 5) длина вектора.
Вектор представить типом «Запись» с полями X, Y: Real. Используя этот модуль, решить задачу:Дан массив А — массив векторов. Отсортировать его в порядке убывания длин векторов.
Модуль создал, осталось сортировка. Нужна помощь
Решение задачи: «Модуль для операций с векторами»
textual
Листинг программы
uses vect;
const max=20;
var a:array[1..max] of Vector;
n,i,j:byte;
x:Vector;
begin
randomize;
repeat
write('Введите количество векторов от 2 до ',max,' n=');
readln(n);
until n in [2..max];
writeln('Исходные вектора');
for i:=1 to n do
with a[i] do
begin
x:=-5+10*random;
y:=-5+10*random;
write(i:2,'(x=',x:5:2,' y=',y:5:2,' dlina=',Dlina(a[i]):5:2,') ');
if i mod 2=0 then writeln;
end;
writeln;
//сортировка
for i:=1 to n-1 do
for j:=i+1 to n do
if Dlina(a[i])< Dlina(a[j]) then
begin
x:=a[i];
a[i]:=a[j];
a[j]:=x;
end;
writeln('Вектора в порядке убывания длин');
for i:=1 to n do
with a[i] do
begin
write(i:2,'(x=',x:5:2,' y=',y:5:2,' dlina=',Dlina(a[i]):5:2,') ');
if i mod 2=0 then writeln;
end;
end.
Объяснение кода листинга программы
- Подключение модуля
vectс операциями над векторами. - Определение константы
maxсо значением 20. - Объявление массива
aразмеромmaxс элементами типаVector. - Объявление переменных
n,i,jтипаbyte. - Объявление переменной
xтипаVector. - Инициализация генератора случайных чисел.
- Ввод количества векторов
nс проверкой ввода. - Вывод сообщения
Исходные вектора. - Генерация случайных координат для каждого вектора в диапазоне от -5 до 5.
- Вывод информации о каждом векторе: номер, координаты, длина.
- Сортировка векторов в массиве
aпо убыванию их длин. - Вывод отсортированных векторов.
- Конец программы.
Здесь
Vectorпредположительно представляет собой структуру или класс, содержащий координаты и операции с векторами, и определенный в подключаемом модулеvect.