Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2011, 08:23   #1
GaJIbI4
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 77
Сообщение Найти длины векторов Pascal

Паскаль знаю плоховато, нужна помощь.
Заданы три вектора A={a1, a2, a3,}, B={b1, b2, b3}, C={c1, c2, c3}.
Вычислить и вывести на печать длины этих векторов, предварительно расставив их в порядке возрастания. Вычисление длины вектора оформить в виде подпрограммы-функции.
Исходные данные:
A={-2.1; 3.4; 2.48; -1}; B={-0.8; 1.25; 3.1; -1.5; 0.25};
C={0.55; -1; 1.1; 2.05}.

вот что накидал:

Код:
type vector=array [1..5] of real;
var k: byte;
dl:real;
x: vector;
 
function dlvec(y:vector):real;
var i:byte;
s:real;
begin
for i:=1 to k do
s:= s+sqr(y[i]);
dlvec:= sqrt(s);
end;
 
var
i:integer;
y: vector;
begin
k:=5;
writeln('Введите координаты вектора');
for i:=1 to k do
readln(y[i]);
dl:=dlvec(y);
writeln('Длина вектора Х равна', dl: 8: 2);
end.

Последний раз редактировалось GaJIbI4; 27.12.2011 в 22:54.
GaJIbI4 вне форума Ответить с цитированием
Старый 27.12.2011, 09:01   #2
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Код:
readln(y[i]);
dl:=dlvec(x);
Вы заполняете один вектор, а длину считаете другого (не заполненного)

А пока в целом вроде верно
Сортировка - банальный пузырек можно использовать (но длину лучше тогда тоже хранить как массив)
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 27.12.2011, 23:19   #3
GaJIbI4
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 77
По умолчанию

Вот доработал, осталось реализовать вывод на экран длины векторов в порядке возрастания, тоесть не просто отсортировать и вывести на экран массив чисел, а например должно быть так: А=1 В=2 С=3. Как можно это реализовать?
Код:
type vector=array [1..5] of real;
var k: byte;

x: vector;

function dlvec(y:vector):real;
var i:byte;
s:real;
begin
for i:=1 to k do
s:= s+sqr(y[i]);
dlvec:= sqrt(s);
end;

var
i:integer;
vA, vB, vC: vector;
dlA, dlB, dlC, max:real;
begin

writeln('Введите количество координат вектора А: ');
readln(k);
writeln('Введите координаты вектора A: ');
for i:=1 to k do
readln(vA[i]);

writeln('Введите количество координат вектора B: ');
readln(k);
writeln('Введите координаты вектора B: ');
for i:=1 to k do
readln(vB[i]);

writeln('Введите количество координат вектора C: ');
readln(k);
writeln('Введите координаты вектора C: ');
for i:=1 to k do
readln(vC[i]);


dlA:=dlvec(vA);
dlB:=dlvec(vB);
dlC:=dlvec(vC);

if  dlA >= dlB then
max := dlA
else
max := dlB;
if dlC > max then
max := dlC;

end.

Последний раз редактировалось GaJIbI4; 28.12.2011 в 00:18.
GaJIbI4 вне форума Ответить с цитированием
Старый 28.12.2011, 21:17   #4
GaJIbI4
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 77
По умолчанию

Помогите пожалуйста, еще актуально.
GaJIbI4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти остовное дерево минимальной длины. Mollerat Помощь студентам 0 25.05.2011 08:37
Списки.удаление наименьшей длины строки.free pascal maddanil Помощь студентам 1 24.05.2011 22:17
[Pascal] Обработка Массивов переменной длины TidalAeon Помощь студентам 1 06.12.2009 18:40
Ввод векторов и матриц, умножение матрицы на вектор и вычисление скалярного призведения двух векторов zverushka Помощь студентам 18 20.02.2009 15:25