Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2016, 16:01   #1
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию Math в TP7

Что-то в приступе любви к ближним решил сегодня после обеда: напишу-ка я прогу для студента. Правда, в TP7 я практически не работал, но ведь на Делфи написаны мегабайты нетленки Облом-с ! Уперся в Power. Не понимает компиллер! Ясен пень, в Делфи я бы подключил uses Math - но тут нет такого ? Все TPU - о чем-то другом, а не о расширенных мат. функциях. Чего я не догоняю ?
digitalis вне форума Ответить с цитированием
Старый 18.10.2016, 16:14   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Экспонента с логарифмом вас спасет
p51x вне форума Ответить с цитированием
Старый 18.10.2016, 16:14   #3
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Math нету, но это не мешает его написать самому. Или портировать из Delphi.

Код:
function power(const Base, Exponent: Extended): Extended;
var Ln_base:Extended;
var For_exp:Extended;
begin
   Ln_base:=Ln(Base);
   For_exp:=Exponent*Ln_base;
   power := Exp(For_exp);
end;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 18.10.2016, 16:24   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
Злость

Спасибо за ответы. Написать самому - это, конечно, как два байта об асфальт. Но вот отсутствие такого необходимого штатного инструмента в ТР7 - удивляет. Думал - чего-то не понимаю, не там ищу. Оказалось - нет черной кошки в темной комнате
В общем, век живи - век "Учись, студент !" ©

Последний раз редактировалось digitalis; 18.10.2016 в 16:33.
digitalis вне форума Ответить с цитированием
Старый 18.10.2016, 16:27   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

угу, не было такого в Turbo Pascal.

в простейших случаях Power заменялась на
Код:
function POWERFN (number, exponent : real) : real;
     begin
       powerfn := Exp(exponent*Ln(number));
     end;
в особо "тяжёлых" так (скопировано ОТСЮДА

Цитата:
To make it general use:
Код:
   (* Generalized power function by Prof. Timo Salmi *)
   function GENPOWFN (number, exponent : real) : real;
   begin
     if (exponent = 0.0) then
       genpowfn := 1.0
     else if number = 0.0 then
       genpowfn := 0.0
     else if abs(exponent*Ln(abs(number))) > 87.498 then
       begin writeln ('Overflow in GENPOWFN expression'); halt; end
     else if number > 0.0 then
       genpowfn := Exp(exponent*Ln(number))
     else if (number < 0.0) and (Frac(exponent) = 0.0) then
       if Odd(Round(exponent)) then
         genpowfn := -GENPOWFN (-number, exponent)
       else
         genpowfn :=  GENPOWFN (-number, exponent)
     else
       begin writeln ('Invalid GENPOWFN expression'); halt; end;
   end;  (* genpowfn *)
On the lighter side of things an extract from an answer of mine in
the late comp.lang.pascal UseNet newsgroup:
>anyone point out why X**Y is not allowed in Turbo Pascal?
The situation in TP is a left-over from standard
Pascal. You'll recall that Pascal was originally
devised for teaching programming, not for
something as silly and frivolous as actually
writing programs. :-)
Вольный перевод последней фразы:

> Кто-нибудь может объяснить, почему X ** Y не допускается в Turbo Pascal?
Ситуация в TP является пережитком, доставшемся от стандартного Паскаля.
Вы помните, что Паскаль был первоначально разработан для обучения программированию,
а не для таких глупостей и легкомысленностей, как обычное написание программ. :-)

Последний раз редактировалось Serge_Bliznykov; 18.10.2016 в 16:33.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки,TP7 Elecktrosha Помощь студентам 0 20.12.2009 15:09
tp7 на семерке Fi11eR Паскаль, Turbo Pascal, PascalABC.NET 3 19.12.2009 01:12
Задачка на TP7 Disel Паскаль, Turbo Pascal, PascalABC.NET 2 19.01.2009 14:30
6 задач по TP7 Disel Паскаль, Turbo Pascal, PascalABC.NET 21 14.01.2009 19:50
6 задач по TP7 Disel Паскаль, Turbo Pascal, PascalABC.NET 17 14.01.2009 16:33