Open alexey-malov opened 8 years ago
std::string GetVectorItems(const std::vector<double> & numbers)
{
std::ostringstream oss;
std::copy(numbers.begin(), numbers.end(), std::ostream_iterator<double>(oss, " "));
return oss.str();
}
Поведение не соответствует имени. Лучше назвать как-то вроде VectorToString
std::transform(numbers.begin(), numbers.end(), numbers.begin(),
[positiveAverage](double & number) { return number += positiveAverage; });
Неправильно используется алгоритм transform:
Neither op nor binary_op should directly modify the elements passed as its arguments: These are indirectly modified by the algorithm (using the return value) if the same range is specified for result.
number должен приниматься по значению или константной ссылке. итоговое значение должно возвращаться.
std::vector<double> ReadVector(std::string vectorStr)
{
std::stringstream ss(vectorStr);
double number;
std::vector<double> result;
while (!ss.eof())
{
ss >> number;
result.push_back(number);
}
return result;
}
если ввести что-нибудь, что не является числом, то твой цикл зависнет. читать здесь: http://www.viva64.com/en/d/0289/print/
программа должна считывать числа до конца (EOF), а не только первую строку
тесты не компилируются
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.h(17): error C2039: 'map': is not a member of 'std'
1> c:\vs2015\vc\include\vector(17): note: see declaration of 'std'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.h(17): error C2143: syntax error: missing ';' before '<'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.h(17): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.h(17): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
1> Dictionary.cpp
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.h(17): error C2039: 'map': is not a member of 'std'
1> c:\vs2015\vc\include\vector(17): note: see declaration of 'std'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.h(17): error C2143: syntax error: missing ';' before '<'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.h(17): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.h(17): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(28): error C2065: 'enRu': undeclared identifier
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(28): error C2228: left of '.size' must have class/struct/union
1> f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(28): note: type is 'unknown-type'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(33): error C2065: 'enRu': undeclared identifier
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(33): error C2228: left of '.insert' must have class/struct/union
1> f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(33): note: type is 'unknown-type'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(39): error C2065: 'enRu': undeclared identifier
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(40): error C3312: no callable 'begin' function found for type 'unknown-type'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(40): error C3312: no callable 'end' function found for type 'unknown-type'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(45): error C2065: 'word': undeclared identifier
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(45): error C2228: left of '.first' must have class/struct/union
1> f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(45): note: type is 'unknown-type'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(45): error C2228: left of '.second' must have class/struct/union
1> f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(45): note: type is 'unknown-type'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(57): error C2065: 'enRu': undeclared identifier
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(62): error C2065: 'enRu': undeclared identifier
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(62): error C2228: left of '.find' must have class/struct/union
1> f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(62): note: type is 'unknown-type'
1>f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(62): error C2228: left of '.end' must have class/struct/union
1> f:\teaching\ips\2015\oop\students\rysaev\oop_labs\lab2\dictionary\dictionary.cpp(62): note: type is 'unknown-type'
В проекте не включена поддержка структурных исключений (PRoperties - C++ - Code Generation - Enable C++ Exceptions)
1>c:\sdk\2012\boost_1_55_0\include\boost\test\impl\execution_monitor.ipp(948): warning C4535: calling _set_se_translator() requires /EHa
при отсутствии положительных чисел программа выдает неправильный результат for_each использовать нет нужды, когда есть range-based-for как вариант, можно использовать алгоритм accumulate для подсчета суммы (он же может и подсчитывать количество положительных элементов) аргумент следует принимать по константной ссылке, т.к. ты не меняешь его