Untitled

 avatar
unknown
plain_text
a year ago
1.2 kB
30
Indexable
#include <bits/stdc++.h>
using namespace std;

class StringFunction {
public:
  virtual string Edit(string str1, string str2) = 0;
};

class AppendFunction : public StringFunction {
public:
  string Edit(string str1, string str2) override {
    return str1 + str2;
  }
};

class ReverseAppendFunction : public StringFunction {
public:
  string Edit(string str1, string str2) override {
    return str2 + str1;
  }
};


/*
  str1 + str1 + str2
*/
class CustomAppendFunction : public StringFunction {
public:
  string Edit(string str1, string str2) override {
    return str1 + str1 + str2;
  }
};


class TextEditor {
public:
  string Format(string str1, string str2, StringFunction& func) {
    return func.Edit(str1, str2);
  }
};



int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0); cout.tie(0);

  TextEditor editor;
  string str1, str2;
  cin >> str1 >> str2;

  AppendFunction append_function;
  cout << editor.Format(str1, str2, append_function) << endl;

  ReverseAppendFunction rev_append_function;
  cout << editor.Format(str1, str2, rev_append_function) << endl;

  CustomAppendFunction custom_function;
  cout << editor.Format(str1, str2, custom_function) << endl;

  return 0;
}
Editor is loading...
Leave a Comment