Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

Степень   Найти похожие ветки 

 
Want   (2007-01-03 20:47) [0]

Здравствуйте! Помогите разобратся с функцией возведения в степень Power. Как ее можно применять на практике? К примеру посчитать 5^7.
В Хелпе написано function Power(const Base, Exponent: Extended): Extended; А как ее применить - никак не получается. Спасибо.


 
Юрий Зотов ©   (2007-01-03 21:01) [1]

Base - основание степени, Exponent - показатель степени.
Значит, 5^7 = Power(5, 7)

Для целых чисел лучше использовать IntPower. И не забудьте добавить Math в uses.


 
zol   (2007-01-03 21:19) [2]


> Юрий Зотов ©   (03.01.07 21:01) [1]

Наверное я совершенно не правильно применяю?
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.caption:=Power(5, 7);
end;


 
zol   (2007-01-03 21:21) [3]


> zol   (03.01.07 21:19) [2]

А у меня вообще пишет "Incompatible types "String" and "Extended"".


 
MsGuns ©   (2007-01-03 21:29) [4]

>zol   (03.01.07 21:21) [3]
>А у меня вообще пишет "Incompatible types "String" and "Extended"".

Вам надо предварительно ознакомиться с азами: типы данных в паскале и навыки работы с Obect Inspector


 
Юрий Зотов ©   (2007-01-03 21:30) [5]

Caption - это строка, текст. А Power возвращает число. Разве можно присваивать одно другому напрямую? Это же разные вещи. Нужно использовать преобразование.

Label1.Caption := FloatToStr(Power(5, 7));


 
zol   (2007-01-03 21:42) [6]


> Юрий Зотов ©   (03.01.07 21:30) [5]

Теперь разобрался.Спасибо!


> MsGuns ©   (03.01.07 21:29) [4]


И книга перед носом лежит- а все равно(в голове "ку-ку").Буду исправлятся...


 
Want   (2007-01-03 21:45) [7]


> Юрий Зотов ©   (03.01.07 21:01) [1]

Спасибо! Получается так само можно и с IntPower  (IntPower(5,7))


 
zol   (2007-01-03 21:54) [8]

Ну тут хоть правильно?
procedure TForm1.Button1Click(Sender: TObject);
var
a,b: integer ;
begin
a:=StrToint(Edit1.Text) ;
b:=StrToint(Edit2.Text) ;
Label1.Caption:=FloatTostr(Power(a ,b));
end;


 
Anatoly Podgoretsky ©   (2007-01-03 21:57) [9]

> zol  (03.01.2007 21:54:08)  [8]

Неправильно, обломится на 1,25


 
zol   (2007-01-03 22:18) [10]


> Anatoly Podgoretsky ©   (03.01.07 21:57) [9]

А так?И вообще как будет правильнее?
procedure Stepen(a,b:real;Var T:Real);
begin
T:=Power(a ,b);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
k: real;
mes: string;
begin
Stepen(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text), k);
mes:=FloatToStrF(k, ffGeneral, 4, 2);
Label1.Caption:= mes;
end;


 
Германн ©   (2007-01-04 01:01) [11]


> zol   (03.01.07 22:18) [10]
> ...
> А так?И вообще как будет правильнее?

Так тоже не очень.
1. Там где пользуют real нет функции Power. А там, где она есть, использовать real - моветон.
2. Когда используют функции перевода строчного значения в число, настоятельно рекомендуется пользоваться "резиновыми изделиями":) Т.е. использовать защищенные блоки.
3. Нет никакого смысла захламлять стэк двумя лишними переменными k: real; и mes: string;. Как и нет смысла захламлять исходник лишней процедурой.


 
zol   (2007-01-04 13:26) [12]


> Германн ©   (04.01.07 01:01) [11]

подскажите примером как можно все компактно и правильно записать.- Буду брать в будущем пример.


 
ors_archangel ©   (2007-01-04 16:46) [13]

Может

try
label1.caption := FloatToStrF(Power(StrToFloat(Edit1.Text),StrToFloat(Edit2.Text)), ffGeneral, 4, 2);
excpet
label1.caption := "Ошибка ввода";
end;

А FloatToStrF - существует (просто в первый раз слышу, извините)?


 
isasa ©   (2007-01-04 16:53) [14]

ors_archangel ©   (04.01.07 16:46) [13]

А десятичный разделитель где? (DecimalSeparator)


 
ors_archangel ©   (2007-01-04 18:30) [15]


> isasa ©   (04.01.07 16:53) [14]

Это вопрос по коду или намёк по вопросу? Или шутка такая?


 
zol   (2007-01-04 19:56) [16]


> ors_archangel ©   (04.01.07 16:46) [13]

Спасибо работает, только нужно было исправить excpet на except. Если это оптимально и правильно- благодарю.

еще у меня вопрос : Как при возведении больших чисел избежать отображение в Лейбле занака "E"- и вместо него чтоб писалось полное число?


 
Anatoly Podgoretsky ©   (2007-01-04 21:38) [17]

> zol  (04.01.2007 19:56:16)  [16]

Полное это сколько, неужели все 4096 знаков?


 
zol   (2007-01-04 22:34) [18]


> Полное это сколько, неужели все 4096 знаков?

конечно нет, пусть 6 знаков после запятой.Или я чтото не правильно понял?


 
-DeBUGGeR- ©   (2007-01-04 23:00) [19]


> еще у меня вопрос : Как при возведении больших чисел избежать
> отображение в Лейбле занака "E"- и вместо него чтоб писалось
> полное число?

Времени нету смотреть и проверять, но копай в сторону Format   (в справке вроде как Format String)... там вроде можно сделать чтобы выводить число без "E"...
Типа Label.Caption := Format("%f", [Число_результат]);

Там может и не %f .... короче help смотрите...


 
Галинка ©   (2007-01-05 00:13) [20]

isasa ©   (04.01.07 16:53) [14]

прав. Надо всегда проверять DecimalSeparator. Просто привыкните это делать всегда. Чтобы пользователь не парился с точками и запятыми.


 
Германн ©   (2007-01-05 01:08) [21]


> zol   (04.01.07 22:34) [18]
>
>
> > Полное это сколько, неужели все 4096 знаков?
>
> конечно нет, пусть 6 знаков после запятой.Или я чтото не
> правильно понял?

Появление знака Е зависит не от количества знаков после запятой, а от количества знаков перед оной.
А так используй то, что и предложено в [13].


 
Германн ©   (2007-01-05 01:12) [22]


> Германн ©   (05.01.07 01:08) [21]
>
>
> > zol   (04.01.07 22:34) [18]
> >
> >
> > > Полное это сколько, неужели все 4096 знаков?
> >
> > конечно нет, пусть 6 знаков после запятой.Или я чтото
> не
> > правильно понял?
>
> Появление знака Е зависит не от количества знаков после
> запятой, а от количества знаков перед оной.
> А так используй то, что и предложено в [13].

Извините. Вру конечно. Вышеописанное правильно, только если число больше единицы.


 
Anatoly Podgoretsky ©   (2007-01-05 13:09) [23]

> zol  (04.01.2007 22:34:18)  [18]

Конечно да, как понял ты не знаю, но если в результате получилось число 10^4096, то кау можно показать только 6 знаков без использования математической нотации.
Так что или математическая нотация одно из двух.


 
ors_archangel ©   (2007-01-05 13:14) [24]


> isasa ©   (04.01.07 16:53) [14]
> ors_archangel ©   (04.01.07 16:46) [13]А десятичный разделитель
> где? (DecimalSeparator)

Проверку "точка/запятая" лучше сунуть в сами StrToFloat, давно так сделал и рад


 
zol   (2007-01-05 18:43) [25]


> Anatoly Podgoretsky ©   (05.01.07 13:09) [23]

Ну вот к примеру 0,25^7. получается при вычислении 6,104E-05.
А чтоб получилось 0,000061035? Использовать Format Strings?



Страницы: 1 вся ветка

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.093 c
15-1167600067
Ученик чародея
2007-01-01 00:21
2007.01.21
ЫЫЫыыыыыы... А вы говорите об образовании...


15-1167320179
Rouse_
2006-12-28 18:36
2007.01.21
С днем рождения, Линус!


15-1167698649
Германн
2007-01-02 03:44
2007.01.21
Оч трудно работать компоновщиком


15-1167566081
Riply
2006-12-31 14:54
2007.01.21
С Новым Годом Всех !


6-1155563618
avram
2006-08-14 17:53
2007.01.21
смс