Вычислить компоненты вектора по формуле
вектор не заполняется компонентами
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Не может быть. Весь код приведите. Что у Вас получилось в итоге?
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
const
n=15;
var
b:array[1..n] of double;
p,i:integer;
ii:longint;
begin
p:=-1;
ii:=1;
for i:=1 to n do
begin
ii:=ii*i ;
b[i]:=sin(sqr(i-1)*(i-1)/ii);
if b[i]<0 then
begin
if p<0 then p:=i
else if b[i]>b[p] then p:=i;
end;
end;
end;
end.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Это только так кажется. На самом деле там все происходит. 
Массив B и переменная P - это результат работы. Их надо куда-то вывести.
Быстрее всего на форме (с AutoScroll=true) разместить TLabel (Label1) с AutoSize=true, и вывести туда результаты в виде текста.
В конце процедуры Button1Click:
Кстати, вполне может получиться, что отрицательных элементов нет.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Проверил.
На интервале i=[1,15] отрицетельных значений нет. Нет их и дальше, так как выражение под синусом сильно стремится к нулю.
(Увеличивать N больше 20 нельзя - будет выход за пределы типа longint.)
Проверяйте условие. Видимо что-то не так с Вашей формулой...

Массив B и переменная P - это результат работы. Их надо куда-то вывести.
Быстрее всего на форме (с AutoScroll=true) разместить TLabel (Label1) с AutoSize=true, и вывести туда результаты в виде текста.
В конце процедуры Button1Click:
Код: Выделить всё
with Label1 do begin
for i:=1 to n do Caption := Caption + #13#10 + floattostr(b[i]);
if p<0
then Caption := Caption +#13#10'Отрицательных элементов нет'
else Caption := Caption +#13#10'Наибольший отрицатеотный элемент='+floattostr(b[p]);
end;
Кстати, вполне может получиться, что отрицательных элементов нет.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Проверил.
На интервале i=[1,15] отрицетельных значений нет. Нет их и дальше, так как выражение под синусом сильно стремится к нулю.
(Увеличивать N больше 20 нельзя - будет выход за пределы типа longint.)
Проверяйте условие. Видимо что-то не так с Вашей формулой...
Формула:
-------(i-3)^2--------------------------------------------------------------------------------
bi=sin ________
--------(i) !----------------------------------------------------------------------------------
-------(i-3)^2--------------------------------------------------------------------------------
bi=sin ________
--------(i) !----------------------------------------------------------------------------------
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
b:=sin(sqr(i-3)/ii);
Сейчас программа на ходит наибольшую отрицательную компоненту этого вектора. Однако вектор остается пустым.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Бред 
Если не верите, то поставьте точку останова после b:= и посмотрите под отладчиком. Вы увидите, что массив B заполняется числами.
По какому признаку Вы судите, что массив пустой?

Если не верите, то поставьте точку останова после b:= и посмотрите под отладчиком. Вы увидите, что массив B заполняется числами.
По какому признаку Вы судите, что массив пустой?
Вы не могли бы мне подсказать как сделать так, чтобы компоненты заполнялись в StringGrid.