diff --git a/work/week6/series/homework2/README.md b/work/week6/series/homework2/README.md index d6f8292..1faa57c 100644 --- a/work/week6/series/homework2/README.md +++ b/work/week6/series/homework2/README.md @@ -1,23 +1,23 @@ ### Work division strategy (3 people) 1. Definition of top-level code interface: - Tristan: Series class (`series.hh`) - Théo: define DumperSeries class (`dumper.hh`) 2. Definition and implementation of Series subclasses: - Tristan: ComputePi class (`pi.hh` and `pi.cc`) -- Théo: ComputeAlgebraic class (`algebraic.hh` and `algebraic.cc`) +- Théo: ComputeArithmetic class (`arithmetic.hh` and `arithmetic.cc`) - Théo: modification of main to execute series (`main.cc`) 3. Definition and implementation of DumperSeries subclasses: - Tristan: PrintSeries class (`print.hh` and `print.cc`) - Théo: WriteSeries class (`write.hh` and `write.cc`) 4. Re-definition of printing methods in DumperSeries: - Tristan: modify DumperSeries and PrintSeries classes 5. Evluation of complexity: - Théo: modify Series, ComputePi and ComputeArithmetic classes to optimize computation 6. "Bonus": - Flavio: Implementation of exhaustive, robust testing and options in main file \ No newline at end of file diff --git a/work/week6/series/homework2/src/CMakeLists.txt b/work/week6/series/homework2/src/CMakeLists.txt index dbeb35f..bde1bec 100644 --- a/work/week6/series/homework2/src/CMakeLists.txt +++ b/work/week6/series/homework2/src/CMakeLists.txt @@ -1 +1,5 @@ -add_executable(main main.cc) +add_executable(main + main.cc + arithmetic.cc + series.hh +) diff --git a/work/week6/series/homework2/src/arithmetic.cc b/work/week6/series/homework2/src/arithmetic.cc new file mode 100644 index 0000000..1cc72a5 --- /dev/null +++ b/work/week6/series/homework2/src/arithmetic.cc @@ -0,0 +1,11 @@ +#include +#include "arithmetic.hh" + + +double ComputeArithmetic::compute(unsigned int N) { + double sum = 0; + for (float k = 1; k < N + 1; k++){ + sum += k; + } + return sum; +} diff --git a/work/week6/series/homework2/src/arithmetic.hh b/work/week6/series/homework2/src/arithmetic.hh new file mode 100644 index 0000000..f5c712f --- /dev/null +++ b/work/week6/series/homework2/src/arithmetic.hh @@ -0,0 +1,16 @@ +#ifndef ARITHMETIC_HH +#define ARITHMETIC_HH + +#include "series.hh" + +class ComputeArithmetic: public Series { + public: + ComputeArithmetic() : Series() {}; // Constructor + virtual ~ComputeArithmetic() {}; // Destructor + + public: + double compute(unsigned int N) override; // Defined compute method + +}; + +#endif \ No newline at end of file diff --git a/work/week6/series/homework2/src/main.cc b/work/week6/series/homework2/src/main.cc index bb54486..a0f14ca 100644 --- a/work/week6/series/homework2/src/main.cc +++ b/work/week6/series/homework2/src/main.cc @@ -1,11 +1,20 @@ #include +#include "arithmetic.hh" /* -------------------------------------------------------------------------- */ - int main(int argc, char ** argv) { - // Hello - std::cout << "Hello world"<< std::endl; + + // Parse number of iterations + unsigned int N = 10; + if (argc > 1) { + N = atoi(argv[1]); + } + + // Instanciate series object and compute series + ComputeArithmetic ar; + std::cout << "ComputeArithmetic("<< N << ") = " << ar.compute(N) << std::endl; + return EXIT_SUCCESS; } diff --git a/work/week6/series/homework2/src/series.hh b/work/week6/series/homework2/src/series.hh index 8edb725..6f7b2fb 100644 --- a/work/week6/series/homework2/src/series.hh +++ b/work/week6/series/homework2/src/series.hh @@ -1,10 +1,13 @@ +#ifndef SERIES_HH +#define SERIES_HH + class Series { -public: - // Constructor - Series(); - // Destructor - virtual ~Series(); + public: + Series() {}; // Constructor + virtual ~Series() {}; // Destructor + + public: + virtual double compute(unsigned int N) = 0; // Virtual compute method +}; -public: -virtual double compute(unsigned int N) = 0; -}; \ No newline at end of file +#endif \ No newline at end of file