Консультация № 201291
25.07.2021, 00:45
0.00 руб.
25.07.2021, 17:12
1 5 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Что здесь не так?
[code lang=pascal]uses crt;
var n,i,f,v,s,s2:integer;
p:real;
begin
clrscr;
repeat
write('Enter the natural n>2 n=');
readln(n);
f:=n+1;
for v:=1 to n do
f:=f*v;
until n>2;
s:=0;
s2:=0;
for i:=3 to n do
s:=s+i-2;
p:=s/(f*n)-s2;
writeln('In the loop for P=',p:0:5);
i:=3;
s:=0;
while i<=n do
begin
s:=s+i-2;
i:=i+1;
end;
p:=s/(f*n)-s2;
writeln('In the loop while P=',p:0:5);
f:=n+1;
for v:=1 to n do
f:=f*v;
i:=3;
s:=0;
repeat
s:=s+i-2;
i:=i+1;
until i>n;
p:=s/(f*n)-s2;
writeln('In the loop repeat P=',p:0:5);
readln
end. [/code]

Прикрепленные файлы:
2021-07-25_00-35-29.png

Обсуждение

давно
Профессор
401888
1232
25.07.2021, 03:28
общий
это ответ
Можно так.
[code lang=pascal]uses crt;
var n,i:integer;
s,s1,f,p:real; {при больших n может быть выход за пределы целых типов}
begin
clrscr;
repeat
write('Enter the natural n>2 n=');
readln(n);
until n>2;
{цикл for}
s:=0;
s1:=0;
f:=1;
for i:=0 to n+1 do
begin
if i>=3 then s:=s+(i-2);
if i<=n then s1:=s1+i;
if i>1 then f:=f*i;
end;
p:=s/f/n-s1;
writeln('Pfor=',p:0:5);
{цикл while}
s:=0;
s1:=0;
f:=1;
i:=0;
while i<=n+1 do
begin
if i>=3 then s:=s+(i-2);
if i<=n then s1:=s1+i;
if i>1 then f:=f*i;
i:=i+1;
end;
p:=s/f/n-s1;
writeln('Pwhile=',p:0:5);
{цикл repeat until}
s:=0;
s1:=0;
f:=1;
i:=0;
repeat
if i>=3 then s:=s+(i-2);
if i<=n then s1:=s1+i;
if i>1 then f:=f*i;
i:=i+1;
until i>n+1;
p:=s/f/n-s1;
writeln('Prepeat=',p:0:5);
readln
end.[/code]
5
давно
Посетитель
405237
9
25.07.2021, 09:45
общий
Адресаты:
Спасибо за ответ, Но при данных рачатах получается отрицательная сумма не соответствующая действительности. Допустим при n 5 по данным расчетам выходит -14,997,а если считать без программы должно быть 0,00027.Допустим если n = 5 то выражение которое на картинке равно 3-2/(5+1)получается 6 находим факториал данного числа это 720 его умножаем на 5=3600,сумма 2 всегда равна 0 потому что там 0.тоесть получаться выражение 1/3600-0=0.00083(это ответ с онлайн канкулятора).а если просто считать то 0,00027,Даже если найти сумму с 1 то будет 3.то выходит сумма 0.00083.Помогите написать правильно. Мне кажется что i равно 0 в факториале не верно?Я начинающий могу ошибаться.
давно
Профессор
401888
1232
25.07.2021, 09:54
общий
При n=5 Калькулятор:(1+2+3)/720/5-(1+2+3+4+5)= -14.99833
Программа:-14.99722
давно
Профессор
401888
1232
25.07.2021, 09:56
общий
сумма 2 всегда равна 0

Это не правда при n=5 s2=0+1+2+3+4+5=15
давно
Посетитель
405237
9
25.07.2021, 10:04
общий
Поняла спасибо)Я видимо перепутала считается по n а не по i.Спасибо Вам огромное!!
Форма ответа