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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.86
birdusk
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 3
#1

Cуществует более одного экземпляра перегруженная функция pow - C++

30.04.2012, 11:25. Просмотров 3998. Ответов 10
Метки нет (Все метки)

При написание программы про решение задачи, выдает ошибку связанную с функцией pow. Подскажите как ее исправить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
#include<math.h>
int main() {
    float x, y, z, a, b;
    printf("enter x, a, b;\n");
    scanf("%f%f%f" , &x, &a, &b);
    y= log (((x-3)+4) /(x*x+12));
    float m= pow(y+5,1.0/3);
    z=(m+a) / (sin (b)+m);
    printf("y=%f z=%f", y, z);
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
30.04.2012, 11:36     Cуществует более одного экземпляра перегруженная функция pow #2
Какой компилятор используете? Тут все работает нормально.
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
30.04.2012, 11:36     Cуществует более одного экземпляра перегруженная функция pow #3
а что за ошибка?
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
30.04.2012, 11:37     Cуществует более одного экземпляра перегруженная функция pow #4
Цитата Сообщение от ZoRT Посмотреть сообщение
а что за ошибка?
Ошибка указана в названии темы
birdusk
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 3
30.04.2012, 11:38  [ТС]     Cуществует более одного экземпляра перегруженная функция pow #5
использую VS 2010,
Ошибка 1 error C2666: pow: для 6 перегрузок есть подобные преобразования
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
30.04.2012, 11:44     Cуществует более одного экземпляра перегруженная функция pow #6
У 10 студии проблемы с перегрузкой функций, сам ушел из-за этого с нее. Если есть возможность, то скачайте лучше бесплатную IDE, например NetBeans или Eclipse, и компилятор MinGW к ней.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
30.04.2012, 11:59     Cуществует более одного экземпляра перегруженная функция pow #7
Проблема из-за того, что первый аргумент функции pow имеет тип float, а второй double. Если тип сделать одинаковым, то проблема должна уйти.
Вариантов несколько:
C++
1
2
3
4
float m = pow((double)y+5,1.0/3);
float m = pow(y+5,(float)1.0/3);
float m = pow(y+5,1.0f/3);
float m = powf(y+5,1.0/3);
Можно ещё так
C++
1
float m = std::pow<float>(y+5,1.0/3);
но тогда стоит подключать такой заголовок
C++
1
#include <cmath>
birdusk
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 3
30.04.2012, 14:11  [ТС]     Cуществует более одного экземпляра перегруженная функция pow #8
Всё спасибо заработало!!! А еще вопросик мне там нужно найти ln, а я написал log, правильно ли я зделал?
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
30.04.2012, 14:13     Cуществует более одного экземпляра перегруженная функция pow #9
Да, log это натуральный логарифм.
badvik
2 / 2 / 0
Регистрация: 15.10.2015
Сообщений: 60
Завершенные тесты: 1
24.01.2017, 00:27     Cуществует более одного экземпляра перегруженная функция pow #10
чтобы не создавать похожую тему, задам здесь, вопрос той же перегрузки, элементарная функция:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using namespace std;
 
void round(double &i);
 
int main()
{   
    double i = 5.2;
    
    cout << i << endl;
    round(i);                        // тут ругается
    cout << i << endl;
    
    system("pause");
}
 
void round(double &i)
{
    double celoe, desyat;
 
    desyat = modf(i, &celoe);
    if (desyat > 0.5)
        i = celoe + 1.0;
    else 
        i = celoe; 
}
никак не могу понять, ведь аргумент передается double, все значения double, что не учитываю? И почему тот же код но с указателями (с соответствующими корректировками) все работает правильно?
Причем это ответ из Шилдта, сверил раз 15 - сначала сделал сам с указателями, потом решил сделать как в учебнике по ссылочным параметрам и началась головомойка.
p.s. пробовал по аналогии с pow повтыкать подряд (double), но либо не все варианты перепробовал, либо смысл до конца не понимаю.
MSVS 2015

p.p.s. при наведении на функцию есть заметка, что есть +4 перегрузок, как их можно посмотреть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2017, 02:38     Cуществует более одного экземпляра перегруженная функция pow
Еще ссылки по теме:
C++ Перегруженная функция Haar(x)
Перегруженная функция вывода >> C++
Перегруженная функция sqrt C++
C++ Перегруженная константная функция
C++ math.h перегруженная функция

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

Или воспользуйтесь поиском по форуму:
immortal21
5 / 5 / 1
Регистрация: 02.02.2014
Сообщений: 31
24.01.2017, 02:38     Cуществует более одного экземпляра перегруженная функция pow #11
Назовите свою функцию по другому, к примеру f_round и все заработает. Компилятор ругается, так как в стандартной библиотеке уже есть функция round. Все вышесказанное мое предположение и, возможно есть еще какие то нюансы.

В будущем все же придерживайтесь правил и создавайте новые темы.
Yandex
Объявления
24.01.2017, 02:38     Cуществует более одного экземпляра перегруженная функция pow
Ответ Создать тему
Опции темы

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