Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.044 c
2-1167993718
Vic-z
2007-01-05 13:41
2007.01.21
запись в файле record как найти нужную запись


15-1167335225
ProgRAMmer Dimonych
2006-12-28 22:47
2007.01.21
Работа с MySQL


6-1156377385
dexer
2006-08-24 03:56
2007.01.21
Как передать файл, от ServerSockets к ClientSockets


2-1167206345
FIL-23
2006-12-27 10:59
2007.01.21
строка или число?


3-1162302080
MAX727
2006-10-31 16:41
2007.01.21
Как создать .mdb - файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский