diff --git a/CPlusPlus20ForProgrammers-master/examples/ch06/a.out b/CPlusPlus20ForProgrammers-master/examples/ch06/a.out index f593ff9..744cae7 100755 Binary files a/CPlusPlus20ForProgrammers-master/examples/ch06/a.out and b/CPlusPlus20ForProgrammers-master/examples/ch06/a.out differ diff --git a/CPlusPlus20ForProgrammers-master/examples/ch06/ex01.cpp b/CPlusPlus20ForProgrammers-master/examples/ch06/ex01.cpp new file mode 100644 index 0000000..601f2ae --- /dev/null +++ b/CPlusPlus20ForProgrammers-master/examples/ch06/ex01.cpp @@ -0,0 +1,16 @@ +#include +#include + +using namespace std; + +int main (){ + double matris[5][6]; + int number_of_start = 10; + for(int row_counter=1; row_counter <= number_of_start ; row_counter++){ + for(int star_counter=0; star_counter < row_counter ; star_counter++) + cout << '*'; + cout << endl; + } + + return 0; +} \ No newline at end of file diff --git a/CPlusPlus20ForProgrammers-master/examples/ch06/fig06_12.cpp b/CPlusPlus20ForProgrammers-master/examples/ch06/fig06_12.cpp index 2aa0a8f..90a9840 100644 --- a/CPlusPlus20ForProgrammers-master/examples/ch06/fig06_12.cpp +++ b/CPlusPlus20ForProgrammers-master/examples/ch06/fig06_12.cpp @@ -10,6 +10,10 @@ T multiply(T x, T y) { } +auto multiply_auto(auto x, auto y) { + return x * y; +} + int multiply_int(int x, int y) { return x * y; } @@ -20,7 +24,7 @@ double f(double& x){ } template -T integrate (std::array x, F f){ +T integrate (std::array& x, F f){ T tmp{T(0)}; for (auto s: x){ tmp+= f(s); @@ -31,10 +35,11 @@ T integrate (std::array x, F f){ auto integrate_auto (auto x, auto f){ auto tmp{x[0]}; - tmp = 0.0; + for (auto s: x){ tmp+= f(s); } + tmp-=x[0]; return tmp; } @@ -43,7 +48,7 @@ typedef double (*FUNC)(double&); template -T integrate2 (std::array x, FUNC f){ +T integrate_legacy (std::array x, FUNC f){ T tmp{T(0)}; for (auto s: x){ tmp+= f(s); @@ -69,6 +74,8 @@ int main() { std::cout << "Product of integers: " << std::accumulate( std::begin(integers), std::end(integers), 1, multiply) << "\n"; + //std::cout << "Product of integers: " << std::accumulate( std::begin(integers), std::end(integers), 1, multiply_auto) << "\n"; + std::cout << "Product of integers: " << std::accumulate( integers.cbegin(), integers.cend(), 1, multiply) << "\n"; std::cout << "Product of integers with a lambda: " << std::accumulate(std::begin(integers), std::end(integers), 1, multiply_lambda) << "\n"; @@ -77,9 +84,9 @@ int main() { std::cout << "Product of integers with a lambda: " << std::accumulate(std::begin(floats), std::end(floats), 1, multiply_lambda) << "\n"; - std::cout << "Integration2 template " << integrate2(floats, f) << "\n"; + std::cout << "Integration2 template " << integrate_legacy(floats, f_lambda) << "\n"; - std::cout << "Integration full template " << integrate(floats, f_lambda) << "\n"; + std::cout << "Integration full template " << integrate(floats, f) << "\n"; std::cout << "Integration auto " << integrate_auto(floats, f_lambda) << "\n"; diff --git a/CPlusPlus20ForProgrammers-master/examples/ch06/histogram.cpp b/CPlusPlus20ForProgrammers-master/examples/ch06/histogram.cpp index d8399ea..28df1a7 100644 --- a/CPlusPlus20ForProgrammers-master/examples/ch06/histogram.cpp +++ b/CPlusPlus20ForProgrammers-master/examples/ch06/histogram.cpp @@ -25,12 +25,12 @@ int main() { double lower_bound = 0; std::uniform_real_distribution randomReal{lower_bound, upper_bound}; - constexpr size_t N{10}; + constexpr size_t N{4}; double del {(upper_bound-lower_bound)/N}; std::array histogram{}; // roll die 60,000 times; use die value as frequency index - for (int roll{1}; roll <= 60'000; ++roll) { + for (int roll{1}; roll <= 6000; ++roll) { double val{ randomReal(engine)}; accumulate(histogram, val, lower_bound, upper_bound); }