From 511a6c4c55505b7782d682def9237b50bb9e6a37 Mon Sep 17 00:00:00 2001 From: Eric Teunis de Boone Date: Tue, 3 Dec 2019 10:32:24 +0100 Subject: [PATCH] EX2: Finished --- ex2/ex2.4/build.txt | 6 +++- ex2/ex2.4/test.cpp | 29 +++++++++++++++----- ex2/ex2.5/ndim.cpp | 67 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+), 8 deletions(-) create mode 100644 ex2/ex2.5/ndim.cpp diff --git a/ex2/ex2.4/build.txt b/ex2/ex2.4/build.txt index 8f9a030..15cad4a 100644 --- a/ex2/ex2.4/build.txt +++ b/ex2/ex2.4/build.txt @@ -2,7 +2,11 @@ d) g++ -c max.cc; g++ -c min.cc; +// compile directly +g++ max.cc min.cc test.cpp + +// make archive ar q libMinMax.a max.o min.o -g++ test.cpp -L. -llibMinMax.a +g++ test.cpp -L. -lMinMax diff --git a/ex2/ex2.4/test.cpp b/ex2/ex2.4/test.cpp index eb148b2..4362197 100644 --- a/ex2/ex2.4/test.cpp +++ b/ex2/ex2.4/test.cpp @@ -2,11 +2,19 @@ #include "max.hh" #include "min.hh" - #define LIST_SIZE 5 + +int min( int a, int b ) { + if ( a < b ) { + return b; + } + + return a; +} + int main() { double dbl_a = 2.31233; - double dbl_b = 91.3239; + double dbl_b = 2.78787; int list[ LIST_SIZE ] = { 0, 2 ,4 , 6, -9 }; @@ -15,16 +23,23 @@ int main() { std::cout << "max(" << dbl_a << ", " << dbl_b << ") = " << mylib::max(dbl_a, dbl_b ) << std::endl; std::cout << "min(" << dbl_a << ", " << dbl_b << ") = " << mylib::min(dbl_a, dbl_b ) << std::endl; std::cout << std::endl; -/* + std::cout << "Int & Doubles" << std::endl; std::cout << "max(" << list[4] << ", " << dbl_b << ") = " << mylib::max(list[4], dbl_b ) << std::endl; std::cout << "min(" << list[4] << ", " << dbl_b << ") = " << mylib::min(list[4], dbl_b ) << std::endl; + std::cout << "min(" << list[4] << ", " << list[2] << ") = " << min(list[4], list[2]) << std::endl; std::cout << std::endl; -*/ - std::cout << "List" << std::endl; - //std::cout << "max( list, " << LIST_SIZE << ") = " << mylib::max ) << std::endl; - //std::cout << "min( list, " << dbl_a << ", " << dbl_b << ") = " << mylib::max(dbl_a, dbl_b ) << std::endl; + + std::cout << "List = ["; + for (int i = 0; i < LIST_SIZE; i++ ) + { + std::cout << list[i] << ", "; + } + std::cout << "]" << std::endl; + + std::cout << "max( list, LIST_SIZE) = " << mylib::max( list, LIST_SIZE ) << std::endl; + std::cout << "min( list, LIST_SIZE) = " << mylib::min( list, LIST_SIZE ) << std::endl; return 0; } diff --git a/ex2/ex2.5/ndim.cpp b/ex2/ex2.5/ndim.cpp new file mode 100644 index 0000000..575da19 --- /dev/null +++ b/ex2/ex2.5/ndim.cpp @@ -0,0 +1,67 @@ +/* + * + */ + +#include "iostream" + +#define Y_SIZE 3 +double* multiply( double ivec[], int N, double mtx[][Y_SIZE] ); + + +int main() { + int Nx = 4; + + double ivec[Nx] = {1, 2, 50, 3.141517181920}; + double mtx[Nx][Y_SIZE] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}}; + + // print vector + std::cout << "Vector = "; + std::cout << "[ "; + for ( int i = 0; i < Nx; i++){ + std::cout << ivec[i] << ", " ; + } + std::cout << "]" << std::endl; + + // print matrix + std::cout << "Matrix = "; + std::cout << "["; + for ( int i = 0; i < Nx; i++ ){ + std::cout << "[ "; + for ( int j = 0; j < Y_SIZE; j++ ){ + std::cout << mtx[i][j] << ", " ; + } + std::cout << "]," << std::endl; + } + std::cout << "]" << std::endl; + + + + + + double * nvec = multiply( ivec, Nx, mtx ); + + + // print new vector + std::cout << "Result = "; + std::cout << "[ "; + for ( int i = 0; i < Y_SIZE; i++){ + std::cout << nvec[i] << ", "; + } + std::cout << "]" << std::endl; + delete nvec; +} + + +double* multiply( double ivec[], int N, double mtx[][Y_SIZE] ){ + //allocate the new vector of length N + double * nvec = new double[Y_SIZE]; + + for ( int j = 0; j < Y_SIZE; j++ ){ + for ( int i = 0; i < N; i++ ){ + nvec[j] += ivec[i]*mtx[i][j]; + } + + } + + return nvec; +}