Лучший ответ

    1.  2 0

    _Juice_ 4 (2031)26 10 лет  

    В программе всего 2 места где происходит деление:

    f:=-1.0/sqr(k)
    и
    f:=1.0/sqr(k);


    В обоих случаях деление происходит на целое число - потому что k:Integer, а sqr() вычисляет квадрат k. Таким образом может казаться, что деление на ноль происходить не может - потому что в основном блоке программы k начинается от 1 и потом только увеличивается в цикле (на +1 при каждой итерации).

    Паскаль имеет свою особенность - у всех типов есть максимальное значение. Для Integer - диапазон, кажется, -32768..32767. Если в какой-то момент значение k равно 32767 и к нему прибавляется еще 1, то получается -32768 (то есть как бы начинается отстчет от другого конца диапазона). При последующем увеличении значения в цикле - каждый раз на 1 - отрицательные значения k увеличиваются и достигают нуля. В этот момент происходит деление на ноль.

    Скорее всего неправильно задано условие прерывания цикла и он продолжается дольше, чем было задумано. Нужно проверить - при помощи вывода всех значений, как и было предложено.

    Возможно также отключить "функцию" Паскаля, которая превращает 32767 + 1 в -32768. Нужно задать какую-то специальную директиву компилятору (ищи в гугле по "arithmetic overflow").

Ответы

    1.  1 0

    seregins (38) 6 (11852)3933 10 лет  

    я уж думал ПАСЦАЛ !    

    1.  0 0

    Boogeyman (25) 6 (6980)11224 10 лет  

    что за бессмысленный набор букв

    1.  0 0

    Jointer 1 (152)2 10 лет  

    Ну блин, трассерни свое k в фунции и корень от нее... где-то он становится равным нулю.

    выведи и посмотри

    writeln k, sqr(k);


    В чем кстать глубинный философский смысл этого выражения ? : \/
    if odd(k) then
    f:=-1.0/sqr(k)
    else
    f:=1.0/sqr(k);
    end;




    f:=-1.0/sqr(k)

    1.  0 0

    Andrja 5 (2624)28 10 лет  

    Division by zero

    if odd(k) then
    f:=-1.0/sqr(k)
    else
    f:=1.0/sqr(k);
    end;

    1.  0 0

    h2u (30) 6 (7295)2413 10 лет  

    ошибка в делении

    1.  0 0

    Ljolium 6 (19745)446147 10 лет  

    Division by zero.

    это значит ДЕЛЕНИЕ НА НОЛЬ, а оно неправильно.
    следовательно, ищем где неправильно. корень из какой переменной равен нулю?
    f:=-1.0/sqr(k)
    else
    f:=1.0/sqr(k);

Похожие вопросы

Рейтинг@Mail.ru Top.LV PULS.LV Professional rating system