From 1fc5123d88e1c2572fef2f274c0dad795033a5f3 Mon Sep 17 00:00:00 2001 From: davoudn Date: Tue, 23 Apr 2024 11:55:49 +0330 Subject: [PATCH] ch06 was changed --- .../examples/ch06/a.out | Bin 0 -> 17416 bytes .../examples/ch06/fig06_01.cpp | 95 +++++++----------- .../examples/ch06/matrix.cpp | 57 +++++++++++ 3 files changed, 94 insertions(+), 58 deletions(-) create mode 100755 CPlusPlus20ForProgrammers-master/examples/ch06/a.out create mode 100644 CPlusPlus20ForProgrammers-master/examples/ch06/matrix.cpp diff --git a/CPlusPlus20ForProgrammers-master/examples/ch06/a.out b/CPlusPlus20ForProgrammers-master/examples/ch06/a.out new file mode 100755 index 0000000000000000000000000000000000000000..f625659f647ecf40c0de2283b1a6c7d30e2aff19 GIT binary patch literal 17416 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 X5Wmu<#|*Xfx9_$jGEUWMUS literal 0 HcmV?d00001 diff --git a/CPlusPlus20ForProgrammers-master/examples/ch06/fig06_01.cpp b/CPlusPlus20ForProgrammers-master/examples/ch06/fig06_01.cpp index b43e941..86fadd8 100644 --- a/CPlusPlus20ForProgrammers-master/examples/ch06/fig06_01.cpp +++ b/CPlusPlus20ForProgrammers-master/examples/ch06/fig06_01.cpp @@ -1,62 +1,41 @@ -// fig06_01.cpp -// Initializing an array's elements to zeros and printing the array. -//#include <../libraries/fmt/include/format.h> // C++20: This will be #include -#include -#include -#include -#include - -template -void printArray(T& a, std::string tag){ - std::cout << "Element Value ---> "< +//global variable +//local variable +int k=0; +//function +//array +//struct +//class +//Macro +int main() +{ //block + cout< values{}; // values is an array of 5 int values - std::array floatarray; - std::vector floatvector(20, 0); - for (size_t i{0}; i < floatarray.size(); i++) - floatarray[i] = i*i/10.0; - - // initialize elements of array values to 0 - for (size_t i{0}; i < values.size(); ++i) { - values[i] = i*i; // set element at location i to 0 - } +//definition +short 2B +unsigned int 4B +signed long 8B - printArray(values,"values"); - printArray(floatarray,"floatarray"); - printArray(floatvector, "floatvector"); - std::cout << "Element Value\n" << "\n"; - - floatvector.resize(5); - printArray(floatvector,"floatvector resized"); - // access elements via the at member function - for (size_t i{0}; i < values.size(); ++i) { - std::cout << i< +#include +#include + +constexpr size_t rows{4}; +constexpr size_t columns{4}; +void MatVecMul(const std::array, rows>& A, const std::array& V, std::array& B); + +template +void MatVecMul_template(const std::array, N>& A, const std::array& V, std::array& B); + +template +void MatVecMul_templatefull(const T& A, const U& V, U& B); + +template +void printArrayTemplate(const T& a); + +int main() { + std::array A{std::array{1, 2, 3}, std::array{4, 5, 6},std::array{4, 5, 0}}; + std::array V{1, 2, 3,5}; + std::array B{}; + MatVecMul_template(A, B, V); + + return 0; +} + +void MatVecMul(const std::array, rows>& A, const std::array& V, std::array& B){ + for (int i{0}; i < A.size(); i++) + for (int j{0}; j < A[0].size(); j++) + B[i]+= A[i][j] * V[j]; +} + +template +void MatVecMul_template(const std::array, N>& A, const std::array& V, std::array& B){ + for (int i{0}; i < A.size(); i++) + for (int j{0}; j < A[0].size(); j++) + B[i]+= A[i][j] * V[j]; +} + +template +void MatVecMul_template(const std::vector>& A, const std::vector& V, std::vector& B){ + for (int i{0}; i < A.size(); i++) + for (int j{0}; j < A[0].size(); j++) + B[i]+= A[i][j] * V[j]; +} + +template +void MatVecMul_templatefull(const T& A, const U& V, U& B){ + if (A[0].size() == V.size() && A.size() == B.size() ){ + for (int i{0}; i < A.size(); i++) + for (int j{0}; j < A[0].size(); j++) + B[i]+= A[i][j] * V[j]; + } + else{ + std::cout << "sizes are not compatible!"; + } +} \ No newline at end of file