diff options
| author | Paulo Custodio <pauloscustodio@gmail.com> | 2021-01-26 21:40:08 +0000 |
|---|---|---|
| committer | Paulo Custodio <pauloscustodio@gmail.com> | 2021-01-26 21:40:08 +0000 |
| commit | 536dafb989fad8da4c2df0df1bfc22eb2fac3706 (patch) | |
| tree | c2b39c685cca7cc2ed3b4ab4e91e75f5b9a71fdd /challenge-097/ulrich-rieke/cpp/ch-1.cpp | |
| parent | e36daeee6e93355383ad3a1c3fc43271f9a357d7 (diff) | |
| parent | c34bb5d7bd7fce08e8311a0f527ce7fbd69e4dae (diff) | |
| download | perlweeklychallenge-club-536dafb989fad8da4c2df0df1bfc22eb2fac3706.tar.gz perlweeklychallenge-club-536dafb989fad8da4c2df0df1bfc22eb2fac3706.tar.bz2 perlweeklychallenge-club-536dafb989fad8da4c2df0df1bfc22eb2fac3706.zip | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-097/ulrich-rieke/cpp/ch-1.cpp')
| -rw-r--r-- | challenge-097/ulrich-rieke/cpp/ch-1.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/challenge-097/ulrich-rieke/cpp/ch-1.cpp b/challenge-097/ulrich-rieke/cpp/ch-1.cpp new file mode 100644 index 0000000000..d69135b4cc --- /dev/null +++ b/challenge-097/ulrich-rieke/cpp/ch-1.cpp @@ -0,0 +1,35 @@ +#include <iostream> +#include <cstdlib> +#include <string> +#include <algorithm> +#include <iterator> + +char findCipher( char c, int shift ) { + static const std::string alphabet {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"} ; + std::string mapped { alphabet.substr(26 - shift) } ; + std::reverse ( mapped.begin( ) , mapped.end( ) ) ; + mapped.append( alphabet.substr(0 , 26 - shift ) ) ; + if ( c == ' ' ) + return ' ' ; + else { + auto found = std::find( alphabet.begin( ) , alphabet.end( ) , c ); + return mapped[ static_cast<int>(std::distance(alphabet.begin( ), found))] ; + } +} + +int main( int i , char* argv[ ] ) { + if ( i != 3 ) { + std::cerr << "usage: challenge097 <capital letter string> <leftshift>!\n" ; + return 1 ; + } + int leftshift = std::atoi( argv[ 2 ] ) ; + int realshift = leftshift % 26 ; + std::string plaintext( argv[ 1 ] ) ; + int len = plaintext.length( ) ; + std::string ciphertext ; + for ( char letter : plaintext ) { + ciphertext.push_back( findCipher ( letter , realshift ) ) ; + } + std::cout << ciphertext << std::endl ; + return 0 ; +} |
