Дано действительное число x. Вычислить с точностью до 10^(-6).
program z758g;
uses crt;
var
a,k:integer;
S,x,y:real;
begin
clrscr;
writeln('введите действительное число x - ');
readln(x);
a:=0;
S:=0;
k:=1;
while (a<4) do
begin
y:=1/(sqrt(abs(x))+(k*k));
S:=S+y;
k:=k+1;
write(y:0:8);
writeln(' - ',a:0);
if abs(y)<0.000001 then a:=a+1 else a:=0;
end;
writeln('сумма вычислений с точностью до 10^(-6) равна',S:0:3);
readln;
end.
Не могу понять - программа какая-то странная. Она по-моему вообще ничего не считает. Что такое g?
g я уже убрал...это я чисто для себя вводил переменную, чтобы отследить сколько циклов программа сделала
исправил код
И в чем заключается ее неработа? Ничего не выводит? Или неправильно считает?
А что это значит?
write(y:0:8);
writeln(' - ',a:0);
Сейчас попробую эту программу в другой язык забить.
Хм, программа работает. Правда я убрал фразу else a = 0
А можно и ещё проще:
k:=1;
y:=1;
while (y > 0.000001) do
begin
y:=1/(sqrt(abs(x))+(k*k));
S:=S+y;
k:=k+1;
end;
writeln('сумма вычислений с точностью до 10^(-6) равна',S:0:3);
readln;
end.
Вот и всё. Тоже вроде работает.
Попробуйте сделать, как я сказал.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)