Вычисление у по натуральному числу n

Ответить
pikvar
Сообщения: 9
Зарегистрирован: 11 ноя 2009, 00:58

Что-то сама написала, компилирует, но решает неправильно при n=1, а при n=2 вообще подвисает. Ковыряла сама, может уже просто переклинило? В чем ошибка? Подскажите, сдавать завтра.

Задание: Разработать алгоритм на паскале: Дано натуральное число n, вычислить значение у
y=(n+(1/(1*1)))*((n-1)+(1/(2*2)))*...*(1+(1/(n*n)))


Что наваялось у меня:

program Inform_2;
var i:integer;
var n,y,y1:real;
begin
writeln ('Введите натуральное число n');
readln (n);
while n>i do
begin
i:=0;
y1:=((n-i)+(1/((i+1)*(i+1))));
i:=i+1;
y:=y1;
end;
y:=y*y1;
writeln ('y=', y:7:4);
readln;
end.

Только сильно не бейте))).
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

y:=1
while n>i do
begin
i:=0;
y1:=((n-i)+(1/((i+1)*(i+1))));
i:=i+1;
y:=y*y1;
end;
{ y:=y*y1; - здесь уже не надо}
А вообще можно было сделать цикл for ... to или for ... downto
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
pikvar
Сообщения: 9
Зарегистрирован: 11 ноя 2009, 00:58

Вбила так. На ввод n=1 считает правильно. При попытке ввода 2 или 3 выдает error 205: Floating point overflow.
Переводчик - ошибка 205: переполнение Плавающей запятой.



Все спасибо, сама поняла, i надо с нулевым присвоением вынести наверх
Ответить