Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/361: Рейтинг темы: голосов - 361, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 12.12.2007
Сообщений: 93

Калькулятор, возведение числа в степень

09.03.2008, 20:26. Показов 75559. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу простенький калькулятор!
с умножением, вычитание, делением, сложением разобрался! но вот проблема... нужно еще реализовать возведение числа в степень!
Delphi
1
2
3
4
5
6
procedure TForm1.SpeedButton16Click(Sender: TObject);
begin
s:=StrTofloat(Edit2.Text);
mode:=5;
 Edit2.Text:='0';
end;
при нажатии на эту кнопку по идее должно в edit2.text появиться 0 и необходимо вписать ту цифру, в которую будем возвожить!
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.SpeedButton15Click(Sender: TObject);
begin
case mode of
5:begin
edit2.Text:=floattostr(strtofloat(edit2.Text)^s);
 end;
 
   end;
   end;
Это кнопка равно, должна выдавать ответ!
в var
написал
Delphi
1
2
s:real;
mode: integer;
При запуске проги вылетает ошибка Pointer type required
и показывает на edit2.Text:=floattostr(strtofloat(edit2. Text)^s);
сразу после s
В чем проблема???
Помогите пожалуйста!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2008, 20:26
Ответы с готовыми решениями:

Кнопочный калькулятор (доделать возведение числа в степень и удаление последнего введенного символа)
Задание Выполнить проект "кнопочный калькулятор"в Delphi, предусмотреть: -выполнение основных арифметических операций; -возведение...

Возведение числа в степень
Собственно, как число 5.58672377157e+17 преобразовать в 558672377157000000?

Возведение числа a в степень b
Требуется возвести число a в степень b. С помощью какого цикла это можно сделать? Хотелось бы пример

21
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
09.03.2008, 20:54
Тут Вам не бэйсик. Оператор ^ не для степени, а для указателей.
Вот как надо возводить в степень: y*ln(x) - это x^y
0
 Аватар для TaSSmaN
4 / 4 / 2
Регистрация: 08.03.2008
Сообщений: 41
09.03.2008, 21:56
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Тут Вам не бэйсик. Оператор ^ не для степени, а для указателей.
Вот как надо возводить в степень: y*ln(x) - это x^y
Ты тут экспанен забыл.
Это правильно: X^y = e^(y*lnX) т.е. x^y - это exp(y*ln(x))
1
1 / 1 / 0
Регистрация: 12.12.2007
Сообщений: 93
09.03.2008, 22:04  [ТС]
спасибо за объяснение! а теперь можете помочь это реализовать!
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.SpeedButton16Click(Sender: TObject);
begin
s:=StrTofloat(Edit2.Text);
mode:=5;
 Edit2.Text:='0';
end;
 
procedure TForm1.SpeedButton15Click(Sender: TObject);
begin
case mode of
5:begin
edit2.Text:=exp(s*ln(strtofloat(edit2.Text)));
 end;
   end;
это конечно не правильно!
s- это число в которое возводим
strtofloat(edit2.Text) - значение которое стоит в edit2.text
Как мне это сделать???
0
 Аватар для TaSSmaN
4 / 4 / 2
Регистрация: 08.03.2008
Сообщений: 41
10.03.2008, 00:23
vitaly576
Я ваще не делфист, и влом его ставить, но вроде всё так!

Delphi
1
2
3
s:=StrTofloat(Edit2.Text); - тут допустим написал 2, т.е. возводим в квадрат
mode:=5;
Edit2.Text:='0'; //- тут записал 0 в Едит2
потом, нужно вместо 0, написать в Едит2, любую цифру, к примеру 4
Потом нажал на другую кнопку
Delphi
1
2
3
4
5
begin
case mode of
5:begin
edit2.Text:=exp(s*ln(strtofloat(edit2.Text)));  - и тут вычисл 4^2
end;
т.е. в Едит2 получили число 16
0
1 / 1 / 0
Регистрация: 12.12.2007
Сообщений: 93
10.03.2008, 12:59  [ТС]
Пишет ошибку: Incompatible types: 'String' and 'Extended'
и указывает на
Delphi
1
edit2.Text:=exp(s*ln(strtofloat(edit2.Text)));
0
 Аватар для Ядовитый
7 / 7 / 4
Регистрация: 17.02.2007
Сообщений: 165
10.03.2008, 14:15
экспонента строку не возвращает
0
Флудер
 Аватар для Ensase
195 / 33 / 11
Регистрация: 23.03.2007
Сообщений: 334
10.03.2008, 14:25
Можно еще, например, циклом возводить тогда мат билиотеку за собой не тащить.
p:=k;
for i := 1 to n do p:=p*p;
получится k^n
или рекурсией, хтотя это уже извращение.
Наиболеелподходящий первый вариант с логарифмом, главное про преобразование типов не забывать!
1
1 / 1 / 0
Регистрация: 12.12.2007
Сообщений: 93
10.03.2008, 18:43  [ТС]
Цитата Сообщение от Ensase Посмотреть сообщение
Наиболеелподходящий первый вариант с логарифмом, главное про преобразование типов не забывать!
И как это сделать?
0
 Аватар для Ядовитый
7 / 7 / 4
Регистрация: 17.02.2007
Сообщений: 165
10.03.2008, 19:40
Цитата Сообщение от vitaly576 Посмотреть сообщение
Пишет ошибку: Incompatible types: 'String' and 'Extended'
и указывает на
edit2.Text:=exp(s*ln(strtofloat(edit2.Te xt)));
Delphi
1
edit2.Text:=FloatToStr( exp(s*ln(strtofloat(edit2.Text))) );
0
1 / 1 / 0
Регистрация: 12.12.2007
Сообщений: 93
10.03.2008, 20:59  [ТС]
все конечно получается! но вот такая тема!
он мне возводит в степень наоборот!
то есть ввожу 2^3 мне выдает 9 - (3^2)
Как это объяснить?
0
Флудер
 Аватар для Ensase
195 / 33 / 11
Регистрация: 23.03.2007
Сообщений: 334
11.03.2008, 06:11
поменяй местами переменные в формуле.
a^b = exp(b * ln(a))
0
KsandrXXX
12.03.2008, 23:41
А ф-ция Power(a,b); не подойдет??
*Возводит число "а" в произвольную степень "b"..
 Аватар для Ядовитый
7 / 7 / 4
Регистрация: 17.02.2007
Сообщений: 165
13.03.2008, 11:11
Да использовать функцию Power как-то просто видимо, хотя, если посмотреть в определение функции Power:
Delphi
1
2
3
unit Math;
...
function Power(const Base, Exponent: Extended): Extended;
увидишь тот же расчёт.
0
Junior Developer
 Аватар для velikijmerlin
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261
17.08.2009, 20:44
всем доброго времени суток!
написал так как посоветовали в этой теме...

Delphi
1
2
3
4
        if FloatToStr(sEdit3.Text) > 0 then begin
                sEdit2.Text:= exp(FloatToStr(sEdit1.text) *ln(FloatToStr(sEdit3.text)));
                //результат:= число *ln(степень)
        end;
но у меня возникает ошибка - [Error] Unit1.pas(40): Incompatible types: 'Extended' and 'TCaption'

и указывает на - FloatToStr(sEdit3.Text) > 0 после скобок... и так в каждом преобразовании... показывает после скобок..

З.Ы как я понял из ошибки не совместимость чего то с чем то только что и как исправить хз..((( помогите плиз....
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
17.08.2009, 20:52
Перевести текст в вещественное число это StrToFloat(sEdit3.Text); исправьте в обоих Эдитах.

Добавлено через 47 секунд
Впредь не пишите в чужих темах, мало шансов получить ответ. Создавайте свою тему.
0
32 / 2 / 0
Регистрация: 31.12.2010
Сообщений: 91
17.08.2011, 12:23
у меня выходит ошибка

Delphi
1
2
3
4
5
6
procedure Extent;
begin
 
form1.edt1.Text:=FloatToStr(exp(y*ln(strtofloat(form1.edt1.Text)));
 
end;
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
17.08.2011, 12:31
Производитель дельфи уже за вас все написал, берете вставляете и получаете результат... есть уже спец функция Power возводящая число в степень
Delphi
1
2
3
4
5
6
7
8
9
10
uses Math;
----
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z: Extended;
begin
  x := 2;
  y := 3;
  z := Power(x,y);
  MessageDlg(FloatToStr(x)+'^'+FloatToStr(y)+' = '+FloatToStr(z), mtInformation, [mbOK], 0)
end;
0
4187 / 1835 / 220
Регистрация: 06.10.2010
Сообщений: 4,123
17.08.2011, 16:33
Если степень - целое число, то лучше подойдёт IntPower. Она вычисляет степень за Log2(y) умножений, где y - степень числа.
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 16
10.03.2012, 18:48
как можно через определить максимальную степень числа(в дельфи), просто я условие не могу написать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.03.2012, 18:48
Помогаю со студенческими работами здесь

Возведение числа в большую степень
Подскажите, пожалуйста, как можно возвести число А в степень (В-1)/2, а потом найти остаток от деления на С, для А и В больших (например 97...

Возведение числа в целочисленную степень
Создайте кнопку для возведения X в целочисленную степеньY. с формой на делфи с входящим числом X и на выходе Y стень

Возведение числа в степень по модулю
Кто может поделиться функцией быстрого возведения в степень по модулю N^-1 MOD M

Возведение действительного числа в степень
Нужно возвести число 0.25 в различные степени. Например: 0.25^2.16. Как это реализовать?

Возведение числа в отрицательную степень
Как возвести число в отрицательную степень?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru