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

Call to undefined function 'pow' - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
14.01.2010, 11:32     Call to undefined function 'pow' #1
Есть код

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Рис. 2.21: fig02_21.cpp
// Вычисление сложного процесса
 
#include<iostream>
 
using std::cout;
using std::endl;
using std::ios;
 
#include<windows>
 
int rustext(char str[])
{
 char buffer[1024];
 CharToOem(str,buffer);
 cout << buffer;
}
 
#include<iomanip>
 
using std::setw;
using std::setiosflags;
using std::setprecision;
 
#include<cmath>
 
int main()
{
 double amount, // Сумма депозита
        principal = 1000.0, // инициализация principal
        rate = 0.05; // инициализация rate
 
 rustext("Год ");
 cout << setw(21);
 rustext("Сумма депозита");
 cout << endl;
 
 // установка формата числа с плавающей точкой
 cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(2);
 
 for (int year = 1; year <= 10; year++)
  {
   amount = principal * pow(1.0 + rate, year);
   cout << setw(4) << year << setw(21) << amount << endl;
  }
 
 system("pause");
 return 0;
}

При компиляции получаю сообщения
[C++ Warning] fig02_21_vichislenie_slozhnogo_procenta.cpp(17): W8070 Function should return a value
[C++ Error] fig02_21_vichislenie_slozhnogo_procenta.cpp(43): E2268 Call to undefined function 'pow'
[C++ Warning] fig02_21_vichislenie_slozhnogo_procenta.cpp(49): W8004 'rate' is assigned a value that is never used
[C++ Warning] fig02_21_vichislenie_slozhnogo_procenta.cpp(49): W8004 'principal' is assigned a value that is never used
Я так понимаю, функция pow не определена. Насколько я знаю, для ее работы нужна директива cmath. Так я ее подключил. Почему же тогда получаю ошибку?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
14.01.2010, 12:06     Call to undefined function 'pow' #2
Надо в начале программы вставить директиву
#include <math.h>
Тогда математическая функция pow станет известна транслятору
Директива cmath только подключает мат.библиотеку на этапе линковки
А во время трансляции кода про нее ничего неизвестно
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
14.01.2010, 12:14     Call to undefined function 'pow' #3
Цитата Сообщение от Day Посмотреть сообщение
Директива cmath только подключает мат.библиотеку на этапе линковки
А во время трансляции кода про нее ничего неизвестно
где ты это вычитал? у Подбельского?

единственное отличие между хедерами math.h и cmath в том, что в cmath все функции находятся внутри пространства имён std
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
14.01.2010, 12:44     Call to undefined function 'pow' #4
Приношу извинения
В лабиринтах C++ я пока пловец неважный
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
14.01.2010, 13:36  [ТС]     Call to undefined function 'pow' #5
Да, добавил #include<math>, и все скомпилилось.

Этот код я взял у Дейтлов. Значит, он должен в таком же виде и у меня работать? В чем же дело? Различие компиляторов?

Добавлено через 14 минут
Еще вопрос: почему когда я убираю из
C++
1
cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(2);
параметр ios::showpoint, точка из числа все равно не убирается?
Yandex
Объявления
14.01.2010, 13:36     Call to undefined function 'pow'
Ответ Создать тему
Опции темы

Текущее время: 18:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru