#include #include #include using namespace std; class Crypt { public: virtual string encrypt(string m) const = 0; virtual string decrypt(string m) const = 0; }; class Syldavian : public Crypt { public: string encrypt(string m) const { for ( char& c : m ) { if ( isalpha(c) ) { int upper{ toupper(c) }; c = 'Z' - (upper - 'A') + (c - upper); } } return m; } string decrypt(string m) const { return encrypt(m); } }; class Cleartext : public Crypt { public: string encrypt(string m) const { return m; } string decrypt(string m) const { return m; } }; void send_message(Crypt const& c) { string message; getline(cin, message); cout << c.encrypt(message) << endl; } int main() { Syldavian s; Cleartext c; send_message(s); send_message(c); return 0; }