Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Образовательный студенческий форум _ Информатика / Программирование _ Абрамов. задача 758г

Автор: savedata 19.1.2011, 12:59

Дано действительное число 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.

Автор: Тролль 19.1.2011, 13:05

Не могу понять - программа какая-то странная. Она по-моему вообще ничего не считает. Что такое g?

Автор: savedata 19.1.2011, 13:07

g я уже убрал...это я чисто для себя вводил переменную, чтобы отследить сколько циклов программа сделала

исправил код

Автор: Тролль 19.1.2011, 16:11

И в чем заключается ее неработа? Ничего не выводит? Или неправильно считает?

Автор: savedata 19.1.2011, 17:54

Цитата
Дано действительное число x. Вычислить с точностью до 10^(-6).


ничего не выводит
и k суммирует почему то неправильно...
с каждым циклом k должно увеличиваться на 1, а мне паскаль такой бред выдает

Автор: Тролль 19.1.2011, 18:09

А что это значит?
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.

Вот и всё. Тоже вроде работает.

Автор: savedata 19.1.2011, 19:07

Цитата
А что это значит?
write(y:0:8);
writeln(' - ',a:0);


это я на экран выводил результаты промежуточных вычислений

Автор: Тролль 19.1.2011, 19:10

Попробуйте сделать, как я сказал.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)