Проверьте пожалуйста "калькулятор степеней"
Здравствуйте. Решил вспомнить всё, что знал о паскале (после олимпиады). И для пробы своих знаний сваял СИЕ:
Код:
var a, i, b, f:Integer; Так вот, что здесь неверно? Ошибок нет, но и подсчёт неверен... |
Цитата:
Мне кажется здесь ошибка, результаты вычислений должны быть типа LongInt |
Код:
var a, i :Integer; Никаких изменений, всё те же промашки... |
Позвонил другу... Спросил у него... Предложил так:
Код:
var stepen, i :Integer; |
Цитата:
Вот вы задали все параметры в формате 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; |
Цитата:
Функцию я, если Вы не против, возьму для пользования :) Спасибо за помощь и разъяснение :) |
Цитата:
Могу еще подарить несколько своих библиотечных функций: Тангенс: Код:
function Tan(X:Extended):Extended; Код:
function ArcSin(X:Extended):Extended; Код:
function ArcCos(X:Extended):Extended; Код:
function Ch(X:Extended):Extended; Код:
function ArCh(X:Extended):Extended; Код:
function Nfact(n:LongInt):Extended; |
Огромное спасибо :)
|
Часовой пояс GMT +4, время: 11:11. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.