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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 11:30   #1
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию Call to undefined function 'pow'

Есть код
Код:
// Рис. 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_proc enta.cpp(17): W8070 Function should return a value
[C++ Error] fig02_21_vichislenie_slozhnogo_proc enta.cpp(43): E2268 Call to undefined function 'pow'
[C++ Warning] fig02_21_vichislenie_slozhnogo_proc enta.cpp(49): W8004 'rate' is assigned a value that is never used
[C++ Warning] fig02_21_vichislenie_slozhnogo_proc enta.cpp(49): W8004 'principal' is assigned a value that is never used
Я так понимаю, функция pow не определена. Насколько я знаю, для ее работы нужна директива cmath. Так я ее подключил. Почему же тогда получаю ошибку?
fs444 вне форума Ответить с цитированием
Старый 14.01.2010, 11:42   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
[C++ Warning] fig02_21_vichislenie_slozhnogo_proc enta.cpp(17): W8070 Function should return a value
Сделайте rustext типа void.
Цитата:
[C++ Error] fig02_21_vichislenie_slozhnogo_proc enta.cpp(43): E2268 Call to undefined function 'pow'
Попробуйте подключить math
Код:
#include  <math>
И, на мой взгляд, лучше подключать все библиотеки в одном месте в самом начале кода.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 14.01.2010, 13:23   #3
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

Цитата:
Цитата:
[C++ Warning] fig02_21_vichislenie_slozhnogo_proc enta.cpp(17): W8070 Function should return a value
Сделайте rustext типа void.
А зачем?

Добавил #include<math>, и все скомпилилось.

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

Цитата:
И, на мой взгляд, лучше подключать все библиотеки в одном месте в самом начале кода.
На мой тоже =) Просто я переписал код в том виде, в котором оно в книжке было. Наверное, для наглядности подключения "using std::...".

Еще вопрос: почему когда я убираю из
Код:
cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(2);
параметр ios::showpoint, точка из числа все равно не убирается?

Последний раз редактировалось fs444; 14.01.2010 в 13:36.
fs444 вне форума Ответить с цитированием
Старый 14.01.2010, 14:11   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
А зачем?
Ну хотя бы затем, что по идее компилятор вообще не должен был бы это компилировать. Уж не знаю, почему он это обозначил всего лишь warning'ом... По идее если функция имеет тип отличный от void, то она должна возвращать объект такого типа. А тип void как раз и предназначен для функций, которые ничего не возвращают - у вас как раз такой случай.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 14.01.2010, 14:34   #5
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

Цитата:
void как раз и предназначен для функций, которые ничего не возвращают - у вас как раз такой случай
Понятно
fs444 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает ф-я pow Denni$ Общие вопросы C/C++ 2 09.06.2009 02:44
Undefined variable SPY-FeinD PHP 5 27.05.2009 19:41
Fatal error: Call to undefined function mysql_connect() Air Помощь студентам 1 17.01.2009 12:41
[Linker error] undefined reference to `function name` kermit Помощь студентам 4 11.06.2008 09:19
delphi pow? Happyman Помощь студентам 2 13.05.2008 19:40