var
s:real;
k,i:byte;
x,is,ks: integer;
begin
write('X=');
readln(x);
i:=2;K:=1; is:=1; ks:=1;
while (i<8) and (k<7) do
ks:=ks*(x-k);
is:=is*(x-i);
i:=i+2;
k:=k+2;
s:=is/ks
write('s=', s:5:1);
readln;
end.
В чем ошибка
вычислить S=(x-2)(x-4)…(x-8)/(x-1)(x-3)…(x-7)
Код:
var
s:real;
k,i:byte;
x,is,ks: integer;
begin
write('X=');
readln(x);
i:=2;K:=1; is:=1; ks:=1;
while (i<8) and (k<7) do begin
ks:=ks*(x-k);
is:=is*(x-i);
i:=i+2;
k:=k+2;
end;
s:=is/ks
write('s=', s:5:1);
readln;
end.
s:real;
k,i:byte;
x,is,ks: integer;
begin
write('X=');
readln(x);
i:=2;K:=1; is:=1; ks:=1;
while (i<8) and (k<7) do begin
ks:=ks*(x-k);
is:=is*(x-i);
i:=i+2;
k:=k+2;
end;
s:=is/ks
write('s=', s:5:1);
readln;
end.
Код:
var
s:real;
k,i:byte;
x,iss,ks: integer;
begin
write('X=');
readln(x);
i:=2;K:=1; iss:=1; ks:=1;
while (i<=8) and (k<=7) do
begin
ks:=ks*(x-k);
iss:=iss*(x-i);
i:=i+2;
k:=k+2;
end;
s:=iss/ks
write('s=', s:5:3);
readln;
end.
s:real;
k,i:byte;
x,iss,ks: integer;
begin
write('X=');
readln(x);
i:=2;K:=1; iss:=1; ks:=1;
while (i<=8) and (k<=7) do
begin
ks:=ks*(x-k);
iss:=iss*(x-i);
i:=i+2;
k:=k+2;
end;
s:=iss/ks
write('s=', s:5:3);
readln;
end.
а вообще можно обойтись и одним условием.
Код:
var
s:real;
k,i:byte;
x,iss,ks: integer;
begin
write('X=');
readln(x);
i:=2;K:=1; iss:=1; ks:=1;
while (i<=32) do
begin
ks:=ks*(x-k);
iss:=iss*(x-i);
i:=i+2;
k:=k+2;
end;
if (iss>0) and (ks>0) then
begin
s:=iss/ks;
write('s=', s:5:3);
end
else
write('Деление на ** 0');
readln;
end.
s:real;
k,i:byte;
x,iss,ks: integer;
begin
write('X=');
readln(x);
i:=2;K:=1; iss:=1; ks:=1;
while (i<=32) do
begin
ks:=ks*(x-k);
iss:=iss*(x-i);
i:=i+2;
k:=k+2;
end;
if (iss>0) and (ks>0) then
begin
s:=iss/ks;
write('s=', s:5:3);
end
else
write('Деление на ** 0');
readln;
end.
А почему сдесь везде выдает сообщение "деление на 0"
В какой-то момент, k или/и i стают больше x
или ты про другое "деление на ноль"? не это
Код:
write('Деление на ** 0');
если нет, то где-то k или i стают равным x.
кстати почему ты проверяешь на положительность?
по идее должно быть так:
Код:
if (ks<>0) then
begin
s:=iss/ks;
write('s=', s:5:3);
end
else
write('Деление на ** 0');
begin
s:=iss/ks;
write('s=', s:5:3);
end
else
write('Деление на ** 0');
да кстати, а почему у тебя изменилось условие и теперь i<=32 ?