10 сентября 2010 10.09.10 62 1981

Программирование Delphi

+6

Помогите! Проблема с программой на 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.

Вот здесь нужно найти ошибку!!!
Тому кто найдет огромнейшее спасибо!

Всем огромнейшее спасибо за помощь! Но ошибка была в самой задаче


Лучшие комментарии

Cкриншот ОТРЕДАКТИРУЙ В ПЕИНТЕ и вставь в отчёт, я так на первом курсе делал ХDDD!
Вот попробуй:
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 уменьшается очень быстро и в итоге прирост становиться очень медленным.
Если выводить промежуточные результаты 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 не резиновый то со временем прирост исчезает вообще.
Вроде правильно, хм мож где в записи знак не тот поставил?
вот тоже насчет знаков подумал
и вопрос: программа выдает неправильный результат или пишет ошибку? если второе, то пиши ошибку сюда, разберемся)
так, 2 момента:
1)ты переменную «s» в var не описал. А надо бы)
2)«while abs(s)<0.5» не <, а <= (в условии: пока она не станет больше)
ой, насчет пункта 1: в варе переменная есть, но ей надо в теле программы присвоить значение)
так и есть, а в чем проблема?)
Читай также