Enter password:
#include < iostream > using namespace std; class FunnyClass { public: FunnyClass(); FunnyClass(double a, double b, double c); double get_a() const; double get_b() const; double get_c() const; FunnyClass& operator+=(const FunnyClass& right); FunnyClass& operator++(); // ++ a prefix FunnyClass operator++(int unused); // a ++ postfix void print() const{ cout << "(" << a << ", " << b << ", " << c << ")"; } double compare(const FunnyClass& right) const{ double leftvalue = a*b - c; double rightvalue = right.get_a() * right.get_b() - right.get_c(); return leftvalue - rightvalue; } // TODO: Finish overloading the rest of the operators // FunnyClass& operator-=( ... ); // FunnyClass& operator--(); // FunnyClass& operator--(int ... ); private: double a; double b; double c; }; // b = (1,2,3) c = (2,3,4) // a = left + right = (3,5,7) FunnyClass operator+(const FunnyClass& left, const FunnyClass& right){ FunnyClass result(left.get_a() + right.get_b(), left.get_b() + right.get_b(), left.get_c() + right.get_c()); return result; } // left = (1,2,3) // right = (2,3,4) // -1 > 2 bool operator>(const FunnyClass& left, const FunnyClass& right){ double value = left.compare(right); if(value > 0) return true; return false; } bool operator>=(const FunnyClass& left, const FunnyClass& right){ double value = left.compare(right); if(value >= 0) return true; return false; } bool operator<(const FunnyClass& left, const FunnyClass& right){ double value = left.compare(right); if(value < 0) return true; return false; } bool operator<=(const FunnyClass& left, const FunnyClass& right){ double value = left.compare(right); if(value <= 0) return true; return false; } FunnyClass::FunnyClass(): a(0), b(0), c(0) {} FunnyClass::FunnyClass(double a, double b, double c): a(a), b(b), c(c) {} double FunnyClass::get_a() const{ return this->a; } double FunnyClass::get_b() const{ return this->b; } double FunnyClass::get_c() const{ return this->c; } FunnyClass& FunnyClass::operator+=(const FunnyClass& right){ a += right.a; b += right.b; c += right.c; return *this; } // prefix ++a; FunnyClass& FunnyClass::operator++(){ ++a; ++b; ++c; return *this; } // postfix a++; FunnyClass FunnyClass::operator++(int unused){ FunnyClass clone(a,b,c); ++a; ++b; ++c; return clone; } ostream& operator<<(ostream& out, const FunnyClass& value){ out << "(" << value.get_a() << ", " << value.get_b() << ", " << value.get_c() << ")"; return out; } int main(){ FunnyClass n1(1,2,3); // -1 FunnyClass n2(2,3,4); // 2 cout << ++n1 << endl; cout << n1 << endl; }
Enter password:
#include < iostream > #include < fstream > #include < vector > #include < string > using namespace std; void save_template(const vector< string >& linevector){ ifstream tempfile; tempfile.open("template.txt"); if(tempfile.fail()){ cout << "FAIL TO OPEN" << endl; } string doc = ""; char x; bool first_bar = false; while(tempfile.get(x)){ if(x == '|' && first_bar == false){ first_bar = true; }else if(x == '|' && first_bar == true){ first_bar = false; }else if(x != '|' && first_bar == true){ // replace by the linevector int ind = (int) x - '0'; // this only works for single digit doc += linevector[ind-1]; }else{ doc += x; } } tempfile.close() ofstream outfile; outfile.open("JUNK " + linevector[1] + ".txt"); outfile << doc; outfile.close(); } void run_database(ifstream& infile){ string line; while(getline(infile, line)){ // line = "Mr.|Harry|Hacker|1105 Torre Ave.|Cupertino|CA|95014 " vector< string > linevector; while(line.find("|") != string::npos){ // if you cannot find "|", then stop the while loop linevector.push_back(line.substr(0, line.find("|"))); // Mr. line = line.substr(line.find("|")+1); } linevector.push_back(line); // linevector = {"Mr.", "Harry", ... } save_template(linevector); } } int main(){ ifstream infile; infile.open("database.txt"); if(infile.fail()){ cout << "FAIL to open" << endl; return 1; } run_database(infile); infile.close(); }