Цитата:
Сообщение от Бродяга
Так вот, что здесь неверно? Ошибок нет, но и подсчёт неверен...
|
Еще бы! Бедный Паскаль делает всё, что в его силах, чтобы самостоятельно (по собственной инициативе!) исправить допущенную Вами грубейшую ошибку, но и его возможности не безграничны. Давайте разбираться.
Вот вы задали все параметры в формате Integer, а о том забыли, что диапазон значений в этом формате всего-то от -32768 до +32767. Какие уж тут большие степени! Ладно. Видя такое дело, Паскаль сам(!!!) поменял формат величины f на LongInt. Тут повеселее: максимальное значение в этом формате +2147483647. Отсюда и ограничения. Ведь 4 в 15 степени это 1073741824, а 5 в 13 - 1220703125. Всё - упор.
Но, кстати, и помимо этого Вы ляпов в программу насажали. У Вас там какая-то дикая путаница параметров b и f - сам черт ногу сломит, так и не поняв, зачем это. Ну объявите вначале f:=b и уж больше b не трогайте - вычисляйте f, тем более, что именно f вы и выводите, как результат!
В качестве иллюстрации покажу написанную мною лет 15 назад функцию возведения числа в целую степень, которой я пользуюсь до сих пор:
Код:
function X2np(X:Extended; n:WORD):Extended;
Var i:WORD;
Y:Extended;
BEGIN
IF n=0 THEN X2np:=1 ELSE
IF n=1 THEN X2np:=X ELSE
BEGIN
Y:=X;
FOR i:=2 TO n DO Y:=Y*X;
X2np:=Y;
END;
END;