![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
блок-схема.jpg
собственно по этой блок-схеме необходимо решить задачу. у меня получилось так? Код:
var
Form1: TForm1;
i,n:integer;
z : extended;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.text=''then showMessage ('Error') else
begin
z:=0;
edit1.Text:=inttostr(n);
for i:=1 to n do
z:=z+((-1)*ln(i))*(((x*i)*ln(i))/i);
begin
if (z>n) then edit2.Text:=inttostr(z)
else edit2.Text:=strtoint(n)
end;
end;
end;неработает ![]() Последний раз редактировалось Shiza, 28.02.2011 в 22:55. |
|
#2
|
|||
|
|||
|
Уважаемый Админ знать бы как ими пользоваться
![]() |
|
#3
|
||||
|
||||
|
Болок-схема точная?
|
|
#4
|
|||
|
|||
|
не факт, но хотелось бы верить.
вероятнее что z=сумма+(-1)..... Последний раз редактировалось Shiza, 28.02.2011 в 23:03. |
|
#5
|
||||
|
||||
|
Немного не точная блок-схема, некоторых элементов не хватает. Но если я правильно понял, то код следующий:
Код:
var
i, n, x: integer;
z: extended;
begin
i := 1;
z := 0;
n := StrToInt(Edit1.text);
x := StrToInt(Edit2.text);
repeat
z := z + ((-1) * ln(i)) * (((x * i) * ln(i)) / i);
inc(i);
until i > n;
Edit3.text := FloatToStr(z);
end; |
|
#6
|
|||
|
|||
|
Большое спасибо! Вполне устраивает
![]() |
|
#7
|
|||
|
|||
|
А причём тут логарифм?
|
|
#8
|
||||
|
||||
|
Ну это уже как автор знает математику
![]() |
|
#9
|
|||
|
|||
|
если верить интернету и руководству по Делфи, то в степень на языке делфи возводится через логарифм.
|
|
#10
|
||||
|
||||
|
Вообще в делфи есть процедурка возведения в степень - Power из модуля Math. То бишь: 2^3: Math.Power(2, 3).
А вообще: a^b=e^(b*ln(a))=exp(b*ln(a)). А вообще почитай статейку: http://ru.wikipedia.org/wiki/%D0%92%...%D 0%BD%D1%8C |
|
#11
|
|||
|
|||
|
Благодарю!
|
|
#12
|
|||
|
|||
|
эх.. видимо мне не дано это сделать.
Последний раз редактировалось Shiza, 04.03.2011 в 21:06. |
|
#13
|
|||
|
|||
|
подправила непосредственно уравнение руководствуясь
Цитата:
z:=(exp(i*ln((-1))))*((x*exp(i*ln(i)))/i); но где-то намудрила, выдает ошибку: "invalid floating point operation" (нетрудоспособное действие плавающей точки) |
|
#14
|
|||
|
|||
|
Попробуй поменять типы переменных в Var.
Думаю ругается т.к. какое-то из действий нельзя производить с типом extended, или из-за несовместимости типов и тп. |
|
#15
|
||||
|
||||
|
Цитата:
z := z + exp(i * ln(-1)) * (exp(i * ln(x * i))/i); // если (xi)^i или z := z + exp(i * ln(-1)) * (x * exp(i * ln(i))/i); // если x* i^i И ln(-1) калькуляторы не посчитают. Это комплексный логарифм. Поэтому и ошибка. Подробнее в Википедии. Последний раз редактировалось Sky.NET, 07.03.2011 в 00:29. |