diff --git a/homework2/homework2.kdev4 b/homework2/homework2.kdev4 deleted file mode 100644 index aba3115..0000000 --- a/homework2/homework2.kdev4 +++ /dev/null @@ -1,3 +0,0 @@ -[Project] -Manager=KDevCMakeManager -Name=homework2 diff --git a/homework2/src/dumper_series.h b/homework2/src/dumper_series.h index 122089e..3d1c198 100644 --- a/homework2/src/dumper_series.h +++ b/homework2/src/dumper_series.h @@ -1,18 +1,19 @@ #ifndef DUMPER_SERIES #define DUMPER_SERIES #include "Series.hh" +#include class DumperSeries{ public: DumperSeries(Series & series): series(series){} - virtual void dump() = 0; + virtual void dump(std::ostream & os) = 0; protected: Series & series; }; #endif diff --git a/homework2/src/main.cc b/homework2/src/main.cc index 13f8cc2..54a8fea 100644 --- a/homework2/src/main.cc +++ b/homework2/src/main.cc @@ -1,68 +1,74 @@ //main #include "ComputeArithmetic.hh" #include "ComputePi.hh" #include "print_series.h" #include "write_series.h" #include #include +#include #include using namespace std; int main(int argc, char ** argv){ //command line arguments: Type of series and N of terms. stringstream sstr; for (int i = 1 ; i < argc ; ++i){ sstr << argv[i] << " "; } string which_series; string which_dumper; int frequency; int maxiter; sstr >> which_series; sstr >> which_dumper; sstr >> frequency; sstr >> maxiter; Series * my_series = NULL; DumperSeries * my_dumper = NULL; if (which_series == "pi") my_series = new ComputePi(); else if (which_series == "arithmetic") my_series = new ComputeArithmetic(); else { cout<<"insert one of the two available options:" "\n\t arithmetic (to compute arithmetic series)" "\n\t pi (to compute Pi series)"<> separator; + sstr >> separator; my_dumper = new WriteSeries(*my_series, frequency, maxiter, separator); }else { cout<<"insert one of the two available options:" "\n\t print (to print on screen)" "\n\t write (to write in file)"<dump(); + std::string file_name = "data.txt"; + std::ofstream file(file_name.c_str()); + os = & file; + my_dumper->dump(*os); + file.close(); //double tmpi = my_series->compute(N); //cout<<"Result for the "<frequency = frequency; this->maxiter = maxiter; } -void PrintSeries::dump(){ +void PrintSeries::dump(std::ostream & os){ for(int i=frequency; i class PrintSeries: public DumperSeries{ public: PrintSeries(Series & series, int frequency, int maxiter); - void dump() override; + void dump(std::ostream & os = std::cout) override; private: int frequency; int maxiter; }; #endif diff --git a/homework2/src/write_series.cc b/homework2/src/write_series.cc index e624832..e674607 100644 --- a/homework2/src/write_series.cc +++ b/homework2/src/write_series.cc @@ -1,45 +1,49 @@ #include "write_series.h" #include WriteSeries::WriteSeries(Series & series, int frequency, int maxiter, std::string separator): DumperSeries(series){ this->frequency = frequency; this->maxiter = maxiter; setSeparator(separator); } -void WriteSeries::dump(){ - std::string file_name = "data" + file_extension; - std::ofstream file(file_name.c_str()); - file<<"#i"<separator = ","; this->file_extension = ".csv"; }else if(separator == "space"){ this->separator = " "; this->file_extension = ".txt"; }else if(separator == "tab"){ this->separator = "\t"; this->file_extension = ".txt"; }else if(separator == "pipe"){ this->separator = "|"; this->file_extension = ".psv"; }else{ - std::cerr<<"Not known separator!!! please choose one of {comma, space, tab, pipe}."; + std::cerr<<"Not known separator!!! please choose one of {comma, space, tab, pipe}."< class WriteSeries: public DumperSeries{ public: - WriteSeries(Series & series, int frequency, int maxiter, std::string separator); - void dump() override; + WriteSeries(Series & series, int frequency, int maxiter, std::string separator = "tab"); + void dump(std::ostream & os) override; void setSeparator(std::string separator); private: int frequency; int maxiter; std::string separator; std::string file_extension; }; #endif