Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
238 / 34 / 6
Регистрация: 05.05.2012
Сообщений: 493
1

Функция log

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

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

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

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

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

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

7
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
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
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
Модератор
Эксперт С++
9687 / 8283 / 5053
Регистрация: 18.12.2011
Сообщений: 22,128
18.07.2012, 08:56 5
Цитата Сообщение от dima koz Посмотреть сообщение
забыли скобку:
Это не обязательно.
Существует два способа приведения типа
1. Как вызов функции
double(n)
2. Как оператор
(double)n
2
23 / 17 / 7
Регистрация: 05.06.2012
Сообщений: 72
Записей в блоге: 5
18.07.2012, 10:07 6
Цитата Сообщение от zss Посмотреть сообщение
1. Как вызов функции
double(n)
Спасибо, буду знать.
0
бжни
2467 / 1676 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
18.07.2012, 10:34 7
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от zss Посмотреть сообщение
Как вызов функции
double(n)
это по-сути форма вызова конструктора (temporary object)
в связи с этим такое приведение работает только в c++
3
238 / 34 / 6
Регистрация: 05.05.2012
Сообщений: 493
18.07.2012, 11:51  [ТС] 8
Всем спасибо) так то можно искусственно преобразовать тип. просто интересно почему в билдере работало а здесь нет...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2012, 11:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

Оптимизация log
Доброго времени суток!! Имеется код функции: int q(int i, int j) { int k = (int)(log(1.0*j - i...

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


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

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

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