Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

В чем ошибка

12K
26 ноября 2007 года
Asu2007
41 / / 19.09.2007
вычислить 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
ks:=ks*(x-k);
is:=is*(x-i);
i:=i+2;
k:=k+2;
s:=is/ks
write('s=', s:5:1);
readln;
end.

Но он почему то считает не правильно.
Почему?
1.6K
26 ноября 2007 года
Shtirlitz
145 / / 31.07.2006
Код:
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.
257
26 ноября 2007 года
kosfiz
1.6K / / 18.09.2005
Shtirlitz чуток не то
Код:
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.

а вообще можно обойтись и одним условием.
12K
27 ноября 2007 года
Asu2007
41 / / 19.09.2007
Код:
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.

А почему сдесь везде выдает сообщение "деление на 0"
274
27 ноября 2007 года
Lone Wolf
1.3K / / 26.11.2006
потому что не выполняется условие положительности iss или/и ks
В какой-то момент, k или/и i стают больше x
или ты про другое "деление на ноль"? не это
 
Код:
write('Деление на ** 0');

если нет, то где-то k или i стают равным x.
257
28 ноября 2007 года
kosfiz
1.6K / / 18.09.2005
чтобы такого не было х не должно быть равным 1, 3, 5, 7(по условию).
кстати почему ты проверяешь на положительность?
по идее должно быть так:
 
Код:
if (ks<>0) then
   begin
     s:=iss/ks;
     write('s=', s:5:3);
   end
else
   write('Деление на ** 0');

да кстати, а почему у тебя изменилось условие и теперь i<=32 ?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог