Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

18.07.2012, 06:15. Просмотров 1849. Ответов 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 (C++):

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

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

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

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

Log по основанию 2 - C++
Люди, помогите!!! Нужно написать функцию (Log по основанию 2). Я делал через классы. Так что, все что можно было перегрузить...

Ошибка с Log(10) - C++
Ругается "error C2668: log: неоднозначный вызов перегруженной функции" в этой строчке if ( log(x*x+y*y)/log(10) >Z) {...

7
nexen
187 / 180 / 3
Регистрация: 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 / 1
Регистрация: 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 / 3
Регистрация: 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
Модератор
Эксперт С++
6530 / 6092 / 2007
Регистрация: 18.12.2011
Сообщений: 15,843
Завершенные тесты: 1
18.07.2012, 08:56 #5
Цитата Сообщение от dima koz Посмотреть сообщение
забыли скобку:
Это не обязательно.
Существует два способа приведения типа
1. Как вызов функции
double(n)
2. Как оператор
(double)n
2
dima koz
23 / 17 / 1
Регистрация: 05.06.2012
Сообщений: 72
Записей в блоге: 5
18.07.2012, 10:07 #6
Цитата Сообщение от zss Посмотреть сообщение
1. Как вызов функции
double(n)
Спасибо, буду знать.
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
18.07.2012, 10:34 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от zss Посмотреть сообщение
Как вызов функции
double(n)
это по-сути форма вызова конструктора (temporary object)
в связи с этим такое приведение работает только в c++
3
Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 309
Завершенные тесты: 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(2) - C++
u1 = sin(3.14*2/12)/(log(2)); Пишет, что перегруженная функция. Что сделать?

Создание log файла - C++
Доброго времени суток. Я написал класс, при вызове определённых функций которого, требуется вывести значения его полей в log, для...

Обработка log-файла - C++
Добрый вечер! Ребята, столкнулся с проблемой, и никак не могу найти ей элегантное решение. В голове крутится всякое, но четко понять не...

Чем отличается ln , lg, и log ? - C++
и как реализуются эти функцию в c++


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

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

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