Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/12: Рейтинг темы: голосов - 12, средняя оценка - 5.00
Simply me
235 / 31 / 6
Регистрация: 05.05.2012
Сообщений: 321
Завершенные тесты: 1
1

Функция log

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

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

функция log
Ув.Форумчане, помогите мне необходимо написать эту формула в 3 функция...

Функция для приближённого вычисления Log x по основанию 2 с помощью многочлена наилучшего приближения
Привет всем, помогите написать программы),или если возможно дайте пожалуйста...

По заданым значениям х и у найти значение величины log x y (log с основанием х)
Подскажите,где ошибка в if-else.Потому-что,когда вводить вместо х или у...

по заданым значениям х и у найти значение величины log x y (log с основанием х )
я в принципе понимаю как написать эту программу,но,хоть убейте,в хелпе visual...

Log по основанию 2
Люди, помогите!!! Нужно написать функцию (Log по основанию 2). Я делал...

7
nexen
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
18.07.2012, 06:56 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
1
dima koz
23 / 17 / 7
Регистрация: 05.06.2012
Сообщений: 72
Записей в блоге: 5
18.07.2012, 08:37 3
Цитата Сообщение от nexen Посмотреть сообщение
double a = sqrt(double(x)); // все хорошо, ибо тип был "насильственно" приведен к double
забыли скобку:
C++
1
double a = sqrt((double)(x));
1
nexen
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
18.07.2012, 08:55 4
Цитата Сообщение от dima koz Посмотреть сообщение
забыли скобку:
C++
1
double a = sqrt((double)(x));
Почему же. (по крайней мере) На 2008 студии воспринимает как double(x), так (double)x, так и (double)(x). Всё это эквивалентно, разве я не прав?
0
zss
Модератор
Эксперт С++
7483 / 6851 / 4325
Регистрация: 18.12.2011
Сообщений: 18,126
Завершенные тесты: 1
18.07.2012, 08:56 5
Цитата Сообщение от dima koz Посмотреть сообщение
забыли скобку:
Это не обязательно.
Существует два способа приведения типа
1. Как вызов функции
double(n)
2. Как оператор
(double)n
2
dima koz
23 / 17 / 7
Регистрация: 05.06.2012
Сообщений: 72
Записей в блоге: 5
18.07.2012, 10:07 6
Цитата Сообщение от zss Посмотреть сообщение
1. Как вызов функции
double(n)
Спасибо, буду знать.
0
alex_x_x
бжни
2455 / 1661 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
18.07.2012, 10:34 7
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от zss Посмотреть сообщение
Как вызов функции
double(n)
это по-сути форма вызова конструктора (temporary object)
в связи с этим такое приведение работает только в c++
3
Simply me
235 / 31 / 6
Регистрация: 05.05.2012
Сообщений: 321
Завершенные тесты: 1
18.07.2012, 11:51  [ТС] 8
Всем спасибо) так то можно искусственно преобразовать тип. просто интересно почему в билдере работало а здесь нет...
0
18.07.2012, 11:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2012, 11:51

Ошибка с Log(10)
Ругается "error C2668: log: неоднозначный вызов перегруженной функции" в этой...

Console log
Доброго времени суток всем. Подскажите, а как сделать перехват из консольной...

Перегрузка Log(2)
u1 = sin(3.14*2/12)/(log(2)); Пишет, что перегруженная функция. Что сделать?


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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