想用c++做python里计算数列平均值,和正数在绝对值的比例
2条回答 默认 最新
- _GX_ 2022-09-30 05:50关注
#include <algorithm> #include <iostream> #include <iterator> #include <numeric> #include <vector> int main() { std::vector<int> lst = {-9, 18, 48, 12, 1, -9, -22, -6, 8, -18, 3, 14, -2, 23, 14, -15, 9, 22, -18}; // 区分正数 std::vector<int> lst1; std::copy_if(lst.begin(), lst.end(), std::back_inserter(lst1), [](auto x) { return x > 0; }); std::cout << "正数个数: " << lst1.size() << '\n'; std::copy(lst1.begin(), lst1.end(), std::ostream_iterator<int>(std::cout, " ")); std::cout << '\n'; double s1 = std::accumulate(lst1.begin(), lst1.end(), 0); std::cout << "平均值: " << s1 / lst1.size() << '\n'; // 区分负数 std::vector<int> lst2; std::copy_if(lst.begin(), lst.end(), std::back_inserter(lst2), [](auto x) { return x < 0; }); std::cout << "负数数个数: " << lst1.size() << '\n'; std::copy(lst2.begin(), lst2.end(), std::ostream_iterator<int>(std::cout, " ")); std::cout << '\n'; double s2 = std::accumulate(lst2.begin(), lst2.end(), 0); std::cout << "平均值: " << s2 / lst1.size() << '\n'; // 计算正数在数列绝对值中的比例 std::cout << "比例: " << s1 / (s1 - s2) << '\n'; return 0; }
$ g++ -Wall main.cpp $ ./a.out 正数个数: 11 18 48 12 1 8 3 14 23 14 9 22 平均值: 15.6364 负数数个数: 11 -9 -9 -22 -6 -18 -2 -15 -18 平均值: -9 比例: 0.634686
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用