X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/d47d44b2ed067c834ef210ad544512e7581a1c8e..51a92ed1069b6790ae4d3910f1c3b445e96963d3:/cost_func.cpp?ds=sidebyside diff --git a/cost_func.cpp b/cost_func.cpp index bdea62e..7311199 100644 --- a/cost_func.cpp +++ b/cost_func.cpp @@ -3,23 +3,24 @@ #include #include #include + #include "cost_func.h" -cost_func::cost_func(const char *param) +cost_func::cost_func(const char* param) { int len = strlen(param); char tmpbuf[len + 1]; - char *tmp = tmpbuf; + char* tmp = tmpbuf; memcpy(tmp, param, len + 1); degree = std::count(tmp, tmp + len, ','); factor = new double[degree + 1]; for (int i = degree ; i > 0 ; i--) { - char *next = strchr(tmp, ','); + char* next = strchr(tmp, ','); *next++ = '\0'; - factor[i] = atof(tmp); + std::istringstream(tmp) >> factor[i]; tmp = next; } - factor[0] = atof(tmp); + std::istringstream(tmp) >> factor[0]; } cost_func::~cost_func() @@ -40,10 +41,10 @@ cost_func& cost_func::operator=(const cost_func& ref) double cost_func::operator()(double amount) const { - double ret = factor[degree]; + double result = factor[degree]; for (int i = degree - 1; i >= 0 ; i--) - ret = amount * ret + factor[i]; - return ret; + result = amount * result + factor[i]; + return result; } std::string cost_func::to_string()