Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 293
Завершенные тесты: 1
#1

Функция log - C++

18.07.2012, 06:15. Просмотров 1633. Ответов 7
Метки нет (Все метки)

Здравствуйте! Такой вопрос. Я использовала функцию log для нахождения логарифма по основанию 2 от целого аргумента. В C++ Билдере это работало. А в Visual Studio компилятор выдает ошибку, что у функции log не может быть аргумент int. Подключаю одни и те же файлы. Как это исправить?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2012, 06:15     Функция log
Посмотрите здесь:

C++ Функция для приближённого вычисления Log x по основанию 2 с помощью многочлена наилучшего приближения
Обработка log-файла C++
Log по основанию 2 C++
C++ по заданым значениям х и у найти значение величины log x y (log с основанием х )
По заданым значениям х и у найти значение величины log x y (log с основанием х) C++
Перегрузка Log(2) C++
Чем отличается ln , lg, и log ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
18.07.2012, 06:56     Функция log #2
Цитата Сообщение от Simply me Посмотреть сообщение
Здравствуйте! Такой вопрос. Я использовала функцию log для нахождения логарифма по основанию 2 от целого аргумента. В C++ Билдере это работало. А в Visual Studio компилятор выдает ошибку, что у функции log не может быть аргумент int. Подключаю одни и те же файлы. Как это исправить?
Если ты про log, который в math.h, то это у них ln, т.е логарифм по Эйлеру.
Честно, я не помню функции для вычисления логарифма по основанию, но ты можешь использовать формулу :
log_a(b) = log_c(b)/log_c(a)
где "_а" - основание. Т.е :
log_2(10) = ln(10)/ln(2) (вроде так)

Добавлено через 16 минут
Ах да, если вдруг функция работает для дробного типа, а тебе нужно передать целый аргумент, то можно сделать так :
C++
1
2
3
4
5
int x;
double a = sqrt(x); // ошибка
 
int x;
double a = sqrt(double(x)); // все хорошо, ибо тип был "насильственно" приведен к double
dima koz
23 / 17 / 1
Регистрация: 05.06.2012
Сообщений: 72
Записей в блоге: 5
18.07.2012, 08:37     Функция log #3
Цитата Сообщение от nexen Посмотреть сообщение
double a = sqrt(double(x)); // все хорошо, ибо тип был "насильственно" приведен к double
забыли скобку:
C++
1
double a = sqrt((double)(x));
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
18.07.2012, 08:55     Функция log #4
Цитата Сообщение от dima koz Посмотреть сообщение
забыли скобку:
C++
1
double a = sqrt((double)(x));
Почему же. (по крайней мере) На 2008 студии воспринимает как double(x), так (double)x, так и (double)(x). Всё это эквивалентно, разве я не прав?
zss
Модератор
Эксперт С++
6248 / 5851 / 1891
Регистрация: 18.12.2011
Сообщений: 14,993
Завершенные тесты: 1
18.07.2012, 08:56     Функция log #5
Цитата Сообщение от dima koz Посмотреть сообщение
забыли скобку:
Это не обязательно.
Существует два способа приведения типа
1. Как вызов функции
double(n)
2. Как оператор
(double)n
dima koz
23 / 17 / 1
Регистрация: 05.06.2012
Сообщений: 72
Записей в блоге: 5
18.07.2012, 10:07     Функция log #6
Цитата Сообщение от zss Посмотреть сообщение
1. Как вызов функции
double(n)
Спасибо, буду знать.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
18.07.2012, 10:34     Функция log #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от zss Посмотреть сообщение
Как вызов функции
double(n)
это по-сути форма вызова конструктора (temporary object)
в связи с этим такое приведение работает только в c++
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2012, 11:51     Функция log
Еще ссылки по теме:

C++ функция log
Log Domain error C++
Создание log файла C++
Сортировка сложности O(n log(n) C++
C++ Ошибка с Log(10)

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

Или воспользуйтесь поиском по форуму:
Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 293
Завершенные тесты: 1
18.07.2012, 11:51  [ТС]     Функция log #8
Всем спасибо) так то можно искусственно преобразовать тип. просто интересно почему в билдере работало а здесь нет...
Yandex
Объявления
18.07.2012, 11:51     Функция log
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru