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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2017, 01:05   #1
anna77777
 
Регистрация: 28.12.2016
Сообщений: 5
По умолчанию Delphi посчитать длину вектора по всем известной формуле (корень из суммы квадратов координат вектора)

Задача состоит в том, чтобы посчитать длину вектора по всем известной формуле (корень из суммы квадратов координат вектора), моя программа высчитывает нереально маленькие значения, не могу понять почему

Код:
#
var
  Form1: TForm1;
 a:array[1..4] of real=(-2.1,3.4,2.48,-1);
 b:array[1..5] of real=(-0.8,1.25,3.1,-1.5,0.25);
 c:array[1..4] of real=(0.55,-1,1.1,2.05);
 k:byte;
implementation

{$R *.dfm}

//äëèíà âåêòîðà
function dlin(x:array of real):real;
var i:byte; s:real;
begin
for i:=1 to k do
s:=s+SQR(x[i]);
dlin:=SQRT(s);
end;

procedure TForm1.N1Click(Sender: TObject);
begin
Close
end;

procedure TForm1.N21Click(Sender: TObject);
var E:real;
begin
E:=dlin(b);
 Label2.Caption:=Label2.Caption+'  '+Format('%6.3f',[E])
end;

procedure TForm1.N31Click(Sender: TObject);
var W:real;
begin
W:=dlin(c);
 
Label3.Caption:=Label3.Caption+'  '+Format('%6.3f',[W]);
end;

procedure TForm1.N11Click(Sender: TObject);
var Q:real;
begin
Q:=dlin(a);
Label1.Caption:=Label1.Caption+'  '+Format('%6.3f',[Q])
end;

end.
#
anna77777 вне форума Ответить с цитированием
Старый 06.01.2017, 01:22   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Это что - Delphi ?
А разве так можно -
Код:
 var
   a:array[1..4] of real=(-2.1,3.4,2.48,-1);
?
и так
Код:
 function dlin(x:array of real):real;
А в самой функции dlin чему в самом начале равна s ?
И что такое k :
Код:
for i:=1 to k do
Наверное - все от него . Ибо k=0 , скорее всего.


А вообще попробуйте
Код:
Label2.Caption:=FloatToStr(E);

Последний раз редактировалось type_Oleg; 06.01.2017 в 01:27.
type_Oleg вне форума Ответить с цитированием
Старый 06.01.2017, 03:13   #3
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Код:
function dlin(x:array of real):real;
var i:byte; s:real;
begin
s := 0;
for i:=0 to Length(x) - 1 do
s:=s+SQR(x[i]);
dlin:=SQRT(s);
end;
должно помочь... только не уверен в -1, может и не нужно (давно с делфи не имел дело)
GreenWizard вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
за максимальным элементом вектора С вставить максимальный элемент вектора А, иначе удалить все отрицательные элементы DIbmKa Паскаль, Turbo Pascal, PascalABC.NET 0 12.12.2016 20:09
Найти длину вектора Virtuoz_ Паскаль, Turbo Pascal, PascalABC.NET 2 17.12.2013 21:19
Даны два вектора b=(b1,b2,...,b6),x=(x1,x2,...,x6) и матрица А(6х6).написать программу вычисления длины вектора Ax-b. infern_o Паскаль, Turbo Pascal, PascalABC.NET 10 21.03.2013 10:50
дано 3 вектора. определить максимальный чётный элемент каждого вектора и упорядочить по убыванию 3Doleg Паскаль, Turbo Pascal, PascalABC.NET 0 04.12.2012 01:45
WPF Получение 2D координат 3D вектора Eugene123 WPF, UWP, WinRT, XAML 0 09.10.2010 20:15