Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2012, 12:14   #1
cas2010
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 12
Печаль Ошибка pow(x,y);

Всем добрового времени... у меня такая ошибка с возведением в степень в dev c++

Код:
#include <cstdlib>
#include <iostream>
#include<cmath>
#include<math.h>

using namespace std;

int main()
{
 	int r=pow(3,5);
           cout<<r<<endl;
 	
    system("PAUSE");
   
}
и выдает такие ошибки:

C:\Dev-Cpp\проекты\зщу\main.cpp: In function `int main()':
C:\Dev-Cpp\проекты\зщу\main.cpp:11: error: call of overloaded `pow(int, int)' is ambiguous
C:/Dev-Cpp/include/math.h:150: note: candidates are: double pow(double, double)
C:/Dev-Cpp/include/c++/3.4.2/cmath:361: note: long double std:ow(long double, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:357: note: float std:ow(float, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:353: note: double std:ow(double, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:349: note: long double std:ow(long double, long double)
C:/Dev-Cpp/include/c++/3.4.2/cmath:345: note: float std:ow(float, float)


земетил что если написать так
double r=pow(3.0,5);

То нормально компилируется, но мне надо int r= pow(3,5); он выдает выше предъявленную ошибку... подскажите в чем дело?

Последний раз редактировалось ACE Valery; 12.05.2012 в 15:59.
cas2010 вне форума Ответить с цитированием
Старый 12.05.2012, 12:28   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
int r= pow(3.0, 5);
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 12.05.2012, 12:46   #3
cas2010
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Код:
int r= pow(3.0, 5);
я так написал, и вывелось такая ошибка:

main.cpp: In function `int main()':
main.cpp:11: warning: converting to `int' from `double'

g++.exe main.o -o "pow.exe" -L"C:/Dev-Cpp/lib"
cas2010 вне форума Ответить с цитированием
Старый 12.05.2012, 14:33   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

собственно! А сообщения компила читать уже не комильфо?

Цитата:
Код:
C:\Dev-Cpp\проекты\зщу\main.cpp: In function `int main()':
C:\Dev-Cpp\проекты\зщу\main.cpp:11: error: call of overloaded `pow(int, int)' is ambiguous
C:/Dev-Cpp/include/math.h:150: note: candidates are: double pow(double, double)
C:/Dev-Cpp/include/c++/3.4.2/cmath:361: note: long double std:pow(long double, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:357: note: float std:pow(float, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:353: note: double std:pow(double, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:349: note: long double std:pow(long double, long double)
C:/Dev-Cpp/include/c++/3.4.2/cmath:345: note: float std:pow(float, float)
посмотрите что функция pow возвращает! Я конечно понимаю что вы как бе думаете что к типу double должен наверно компил приводить а потом наоборот из double к int! Но как бе всё от компила зависит!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 12.05.2012, 15:18   #5
cas2010
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
собственно! А сообщения компила читать уже не комильфо?


посмотрите что функция pow возвращает! Я конечно понимаю что вы как бе думаете что к типу double должен наверно компил приводить а потом наоборот из double к int! Но как бе всё от компила зависит!
я в си++ новичек... то что вы мне сказали я вооще не понял... подскажите что мне делать? или как по другому написать фунцию возведения в степень?
cas2010 вне форума Ответить с цитированием
Старый 12.05.2012, 15:27   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

вот так попробуй
Код:
int r = static_cast<int>(pow(3.0,5.0));
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 12.05.2012, 15:30   #7
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Попробуй вот так:
Код:
float r=pow(3,5);
ЗЫ если общими словами, то компилятор ругается на то, что целому числу присваивают вещественное. Это происходит из-за того, что возведение в степень делается при при участии натурального логорифма от 2.
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 12.05.2012, 15:37   #8
cas2010
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
вот так попробуй
Код:
int r = static_cast<int>(pow(3.0,5.0));
да ваша строка работает, но мне нужно не 3.0,5.0 а целое число, на это он ругается т.е на int r= pow(3,5);
и выдает такие сообщения:
Код:
C:\Dev-Cpp\проекты\зщу\main.cpp: In function `int main()':
C:\Dev-Cpp\проекты\зщу\main.cpp:12: error: call of overloaded `pow(int, int)' is ambiguous
C:/Dev-Cpp/include/math.h:150: note: candidates are: double pow(double, double)
C:/Dev-Cpp/include/c++/3.4.2/cmath:361: note:                 long double std::pow(long double, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:357: note:                 float std::pow(float, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:353: note:                 double std::pow(double, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:349: note:                 long double std::pow(long double, long double)
C:/Dev-Cpp/include/c++/3.4.2/cmath:345: note:                 float std::pow(float, float)
cas2010 вне форума Ответить с цитированием
Старый 12.05.2012, 15:38   #9
cas2010
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от SNUPY Посмотреть сообщение
Попробуй вот так:
Код:
float r=pow(3,5);
ЗЫ если общими словами, то компилятор ругается на то, что целому числу присваивают вещественное. Это происходит из-за того, что возведение в степень делается при при участии натурального логорифма от 2.
я пробовал всеравно так же ... выдает такие сообщения
Код:
C:\Dev-Cpp\проекты\зщу\main.cpp: In function `int main()':
C:\Dev-Cpp\проекты\зщу\main.cpp:12: error: call of overloaded `pow(int, int)' is ambiguous
C:/Dev-Cpp/include/math.h:150: note: candidates are: double pow(double, double)
C:/Dev-Cpp/include/c++/3.4.2/cmath:361: note:                 long double std::pow(long double, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:357: note:                 float std::pow(float, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:353: note:                 double std::pow(double, int)
C:/Dev-Cpp/include/c++/3.4.2/cmath:349: note:                 long double std::pow(long double, long double)
C:/Dev-Cpp/include/c++/3.4.2/cmath:345: note:                 float std::pow(float, float)
cas2010 вне форума Ответить с цитированием
Старый 12.05.2012, 15:42   #10
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

да поймите вы наконец! Что компилятор за вас от одного типа данных к другому не переводит, ибо типизация у него строгая! и надо делать в ручную!
вы посмотрите на описание функции Pow
Цитата:
Код:
 double pow (      double base,      double exponent );
long double pow ( long double base, long double exponent );
      float pow (       float base,       float exponent );
     double pow (      double base,         int exponent );
long double pow ( long double base,         int exponent );
видите что тип int возможен только у степени! а остальное нужно приводить!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функции pow и fabs victor5133 Помощь студентам 1 15.10.2011 12:07
Функция pow |Dima| Общие вопросы C/C++ 16 19.07.2011 13:07
функция pow(double x, double y) Не могу понять в чем ошибка Vlashel Помощь студентам 3 07.10.2010 16:28
не работает ф-я pow Denni$ Общие вопросы C/C++ 2 09.06.2009 02:44
delphi pow? Happyman Помощь студентам 2 13.05.2008 19:40