Помогите! Проблема с программой на Delphi!
Задание таково: Используя оператор цикла While для Х=0.5 вычислять сумму до тех пор, пока она не станет больше по модулю величины Е=0.5.
Вот Формула:
Код программы:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,math;
var
x,s,y:real;
k:integer;
begin
x:=0.5;
k:=1;
while abs(s)<0.5 do
begin
y:=(power(-1,k)*power(x,2*(k-1)))/((k+2)*k);
s:=s+y;
k:=k+1;
writeln(s:4:4);
end;
readln;
{ TODO -oUser -cConsole Main: Insert code here }
end.
Вот здесь нужно найти ошибку!!!
Тому кто найдет огромнейшее спасибо!
Всем огромнейшее спасибо за помощь! Но ошибка была в самой задаче
Читай также
Лучшие комментарии
S=0.33
S=0.45
S=0.49
S=0.50
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,math;
var
x,s,y,e:real;
k:integer;
begin
x:=0.5;
s:=0;
e:=0.5;
k:=1;
while s<=abs(e) do
begin
y:=(power(-1,k)*power(x,2*(k-1)))/((k+2)*k);
s:=s+y;
k:=k+1;
writeln(s:4:4);
end;
readln;
{ TODO -oUser -cConsole Main: Insert code here }
end.
Если выводить промежуточные результаты Y — то это заметно
k=1 y=-0.333
k=2 y=0.313
k=3 y=-0.0042
k=4 y=0.0007
k=5 y=-0.0001
А так как real не резиновый то со временем прирост исчезает вообще.
и вопрос: программа выдает неправильный результат или пишет ошибку? если второе, то пиши ошибку сюда, разберемся)
1)ты переменную «s» в var не описал. А надо бы)
2)«while abs(s)<0.5» не <, а <= (в условии: пока она не станет больше)