|
Algorithms_in_C++
1.0.0
Set of algorithms implemented in C++.
|
Implementation of Caesar cipher algorithm.
More...
#include <iostream>
#include <string>
#include <cassert>
Implementation of Caesar cipher algorithm.
In cryptography, a Caesar cipher, also known as Caesar's cipher, the shift cipher, Caesar's code or Caesar shift, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a left shift of 3, D would be replaced by A, E would become B, and so on. The method is named after Julius Caesar, who used it in his private correspondence.
Algorithm
The encryption can also be represented using modular arithmetic by first transforming the letters into numbers, according to the scheme, A → 0, B → 1, ..., Z → 25. Encryption of a letter x by a shift n can be described mathematically as,
\[ E(x) = (x + n)\;\mbox{mod}\; 26\]
while decryption can be described as,
\[ D(x) = (x - n) \;\mbox{mod}\; 26\]
- Note
- This program implements caesar cipher for only uppercase English alphabet characters (i.e. A-Z).
- Author
- Deep Raval
◆ decrypt()
Decrypt given text using caesar cipher.
- Parameters
-
| text | text to be decrypted |
| shift | number of shifts to be applied |
- Returns
- new decrypted text
84 int place_value = get_value(c);
85 place_value = (place_value - shift) % 26;
87 place_value = place_value + 26;
89 char new_char = get_char(place_value);
90 decrypted_text += new_char;
92 return decrypted_text;
◆ encrypt()
Encrypt given text using caesar cipher.
- Parameters
-
| text | text to be encrypted |
| shift | number of shifts to be applied |
- Returns
- new encrypted text
68 int place_value = get_value(c);
69 place_value = (place_value + shift) % 26;
70 char new_char = get_char(place_value);
71 encrypted_text += new_char;
73 return encrypted_text;
◆ main()
◆ test()
Function to test above algorithm
105 assert(text1 == decrypted1);
106 std::cout <<
"Original text : " << text1;
107 std::cout <<
" , Encrypted text (with shift = 21) : " << encrypted1;
113 assert(text2 == decrypted2);
114 std::cout <<
"Original text : " << text2;
115 std::cout <<
" , Encrypted text (with shift = 1729) : " << encrypted2;
void mov(tower *From, tower *To)
Definition: tower_of_hanoi.cpp:39
int main()
Definition: caesar_cipher.cpp:120
int main()
Definition: knuth_morris_pratt.cpp:76
int main()
Definition: fenwick_tree.cpp:69
void ternary_search(int N, int A[], int target)
Definition: ternary_search.cpp:127
std::string encrypt(const std::string &text, const int &shift)
Definition: caesar_cipher.cpp:65
void test3()
Definition: smallest_circle.cpp:188
int main(void)
Definition: decimal_to_hexadecimal.cpp:11
void method2(int number)
Definition: decimal_to_binary.cpp:27
int main()
Definition: exponential_search.cpp:74
ll mat_size
Definition: matrix_exponentiation.cpp:45
int main()
Definition: stairs_pattern.cpp:17
int hash_search(int key, int *counter)
Definition: hash_search.cpp:76
void shell_sort(T *arr, size_t LEN)
Definition: shell_sort2.cpp:45
int main()
Definition: fibonacci_search.cpp:123
std::string tolowerRoman(int n)
Definition: decimal_to_roman_numeral.cpp:24
void test_f(const int NUM_DATA)
Definition: shell_sort2.cpp:145
String search algorithms.
Definition: brute_force_string_searching.cpp:13
#define MAX
Definition: fibonacci_fast.cpp:27
void show_data(T *arr, size_t LEN)
Definition: shell_sort2.cpp:18
void heapSort(T *arr, int n)
Definition: heap_sort.cpp:84
int main()
Definition: binomial_dist.cpp:84
double addition_rule_dependent(double A, double B, double B_given_A)
Definition: addition_rule.cpp:25
void test2()
Definition: smallest_circle.cpp:173
bool random_tests()
random tests which cover cases when we have one, multiple or zero occurences of the value we're looki...
Definition: fibonacci_search.cpp:96
double x
Definition: smallest_circle.cpp:16
int main()
Definition: decimal_to_roman_numeral.cpp:90
int sum_range(int l, int r)
Definition: fenwick_tree.cpp:65
void test()
Definition: heap_sort.cpp:99
#define absolutePrecision
Definition: ternary_search.cpp:22
ll ans(ll n)
Definition: matrix_exponentiation.cpp:91
Definition: fenwick_tree.cpp:17
int main()
Definition: gnome_sort.cpp:130
void insertionSort(T *arr, int n)
Insertion Sort Function.
Definition: insertion_sort.cpp:59
#define HASHMAX
Determines the length of the hash table.
Definition: hash_search.cpp:22
#define PRIME
Prime modulus for hash functions.
Definition: rabin_karp.cpp:16
int partition(int arr[], int low, int high)
Definition: quick_sort.cpp:37
Type * binary_s(Type *array, size_t size, Type key)
Definition: exponential_search.cpp:34
Definition: avltree.cpp:13
double y
Definition: smallest_circle.cpp:17
int FindNextGap(int gap)
Definition: comb_sort.cpp:29
#define MAX
Determines how much data.
Definition: hash_search.cpp:21
int main()
Definition: pascal_triangle.cpp:52
int main()
Definition: bayes_theorem.cpp:26
vector< vector< ll > > multiply(const vector< vector< ll >> &A, const vector< vector< ll >> &B)
Definition: matrix_exponentiation.cpp:57
static void test_double()
Definition: quick_sort_3.cpp:160
static void test()
Definition: gnome_sort.cpp:85
int main(void)
Definition: qr_decomposition.cpp:23
int main()
Definition: palindrome_of_number.cpp:19
int main()
Definition: vector_important_functions.cpp:11
void merge(Iterator, Iterator, const Iterator, char[])
merges 2 sorted adjacent segments into a larger sorted segment
Definition: non_recursive_merge_sort.cpp:57
std::array< T, N > shuffle(std::array< T, N > arr)
Definition: bogo_sort.cpp:36
int main()
Definition: linear_search.cpp:27
static float eqd(float y)
Definition: successive_approximation.cpp:17
void show_array(const std::array< T, N > &arr)
Definition: bogo_sort.cpp:68
std::string fill(char c, int n)
Definition: decimal_to_roman_numeral.cpp:15
void mat_mul(const std::valarray< std::valarray< double >> &A, const std::valarray< std::valarray< double >> &B, std::valarray< std::valarray< double >> *OUT)
Definition: qr_eigen_values.cpp:54
int64_t create_hash(const std::string &s, int n)
Definition: rabin_karp.cpp:25
int stack_idx
pointer to track stack index
Definition: paranthesis_matching.cpp:23
int main(int argc, char *argv[])
Definition: shell_sort2.cpp:183
int main()
Definition: interpolation_search2.cpp:32
int compare(const void *a, const void *b)
Definition: shell_sort2.cpp:87
int brute_force(const std::string &text, const std::string &pattern)
Definition: brute_force_string_searching.cpp:21
int main()
Definition: buzz_number.cpp:9
int fibonacci_search(const std::vector< int > &arr, int value)
using fibonacci search algorithm finds an index of a given element in a sorted array
Definition: fibonacci_search.cpp:23
Functions to compute QR decomposition of any rectangular matrix.
int offset(int x)
Definition: fenwick_tree.cpp:22
void create_matrix(std::valarray< std::valarray< double >> *A)
Definition: qr_eigen_values.cpp:28
int main()
Definition: happy_number.cpp:29
int main()
Definition: text_search.cpp:15
void show(int *arr, int size)
Definition: merge_sort.cpp:96
const std::vector< std::vector< std::string > > test_set
Definition: brute_force_string_searching.cpp:41
int rec_ternary_search(int left, int right, int A[], int target)
Definition: ternary_search.cpp:90
Definition: linkedlist_implentation_usingarray.cpp:14
int y
Point respect to x coordinate.
Definition: line_segment_intersection.cpp:14
std::valarray< double > eigen_values(std::valarray< std::valarray< double >> *A, bool print_intermediates=false)
Definition: qr_eigen_values.cpp:98
int64_t recalculate_hash(const std::string &s, int old_index, int new_index, int64_t old_hash, int patLength)
Definition: rabin_karp.cpp:42
int main()
Definition: smallest_circle.cpp:198
void test_int(const int NUM_DATA)
Definition: shell_sort2.cpp:105
int ** pascal_triangle(int **arr, int n)
Definition: pascal_triangle.cpp:36
void CombSort(int *arr, int l, int r)
Definition: comb_sort.cpp:42
void quicksort(std::vector< T > *arr, int32_t low, int32_t high)
Definition: quick_sort_3.cpp:94
node * insert(node *root, int item)
Definition: avltree.cpp:66
FenwickTree(const std::vector< int > &arr)
Definition: fenwick_tree.cpp:28
void mergeSort(int *arr, int l, int r)
Definition: merge_sort.cpp:83
int main()
Definition: matrix_exponentiation.cpp:126
Library functions to compute QR decomposition of a given matrix.
void merge(int *arr, int l, int m, int r)
Definition: merge_sort.cpp:33
static void create_random_array(T *arr, int N)
Create a random array objecthelper function to create a random array.
Definition: insertion_sort.cpp:101
int h(int key)
Definition: hash_search.cpp:45
void non_recursive_merge_sort(const Iterator first, const Iterator last)
bottom-up merge sort which sorts elements in a non-decreasing order
Definition: non_recursive_merge_sort.cpp:86
void update(int id, int val)
Definition: fenwick_tree.cpp:45
int main(int argc, char const *argv[])
Definition: binary_search.cpp:31
Definition: tower_of_hanoi.cpp:11
#define _target
Definition: ternary_search.cpp:27
void test()
Definition: bogo_sort.cpp:78
int binary_search(int a[], int r, int key)
Definition: binary_search.cpp:15
char opening(char ch)
Definition: paranthesis_matching.cpp:36
bool is_happy(T n)
Definition: happy_number.cpp:14
bool check_if_equal(const std::string &str1, const std::string &str2, int start1, int end1, int start2, int end2)
Definition: rabin_karp.cpp:60
int main()
Definition: ternary_search.cpp:134
double binomial_range_successes(double n, double p, double lower_bound, double upper_bound)
Definition: binomial_dist.cpp:74
double LenghtLine(const Point &A, const Point &B)
Definition: smallest_circle.cpp:37
bool kmp(const std::string &pattern, const std::string &text)
Definition: knuth_morris_pratt.cpp:56
double poisson_range_successes(double expected, double lower, double upper)
Definition: poisson_dist.cpp:54
int main()
Definition: tower_of_hanoi.cpp:65
void non_recursive_merge_sort(const Iterator first, const Iterator last, const size_t n)
bottom-up merge sort which sorts elements in a non-decreasing order
Definition: non_recursive_merge_sort.cpp:25
#define ll
Definition: matrix_exponentiation.cpp:33
double binomial_standard_deviation(double n, double p)
Definition: binomial_dist.cpp:36
void gnomeSort(T *arr, int size)
Definition: gnome_sort.cpp:34
double TriangleArea(const Point &A, const Point &B, const Point &C)
Definition: smallest_circle.cpp:54
int main()
Definition: brute_force_string_searching.cpp:47
double binomial_x_successes(double n, double p, double x)
Definition: binomial_dist.cpp:65
void test2()
Definition: qr_eigen_values.cpp:210
#define endl
Definition: matrix_exponentiation.cpp:36
struct list * link
pointer to nodes
void spiralPrint(int **a, int r, int c)
Definition: spiral_print.cpp:29
double bayes_BgivenA(double AgivenB, double A, double B)
Definition: bayes_theorem.cpp:20
int main()
Definition: quick_sort_3.cpp:183
vector< ll > fib_b
Definition: matrix_exponentiation.cpp:50
double poisson_rate(double events, double timeframe)
Definition: poisson_dist.cpp:17
int key
key value for node
Definition: hash_search.cpp:30
int main(int argc, char **argv)
Definition: qr_eigen_values.cpp:243
double circle(const std::vector< Point > &P)
Definition: smallest_circle.cpp:87
void print(uint32_t N, const std::vector< bool > &is_prime)
Definition: sieve_of_eratosthenes.cpp:44
static float eq(float y)
Definition: successive_approximation.cpp:12
static void test_int()
Definition: quick_sort_3.cpp:138
Type * struzik_search(Type *array, size_t size, Type key)
Definition: exponential_search.cpp:59
int main()
Definition: poisson_dist.cpp:65
double binomial_expected(double n, double p)
Definition: binomial_dist.cpp:22
int main()
Definition: heap_sort.cpp:120
node hashtab[HASHMAX]
array of nodes
Definition: hash_search.cpp:35
int it_ternary_search(int left, int right, int A[], int target)
Definition: ternary_search.cpp:48
int jumpSearch(int arr[], int x, int n)
Definition: jump_search.cpp:12
std::string decrypt(const std::string &text, const int &shift)
Definition: caesar_cipher.cpp:81
int data[MAX]
test data
Definition: hash_search.cpp:24
void method1(int number)
Definition: decimal_to_binary.cpp:11
void test1()
Definition: qr_eigen_values.cpp:177
bool no_occurence_tests()
random tests for checking performance when an array doesn't contain an element
Definition: fibonacci_search.cpp:72
void printArray(T *arr, int sz)
Definition: heap_sort.cpp:37
int main()
Definition: hash_search.cpp:99
void create_list(int key)
Definition: hash_search.cpp:55
double fact(double x)
Definition: poisson_dist.cpp:30
double addition_rule_independent(double A, double B)
Definition: addition_rule.cpp:14
std::array< T, N > randomized_bogosort(std::array< T, N > arr)
Definition: bogo_sort.cpp:51
void show(const struct tower *const F, const struct tower *const T, const struct tower *const U)
Definition: tower_of_hanoi.cpp:19
int main()
Definition: sparse_matrix.cpp:9
void test()
Definition: smallest_circle.cpp:158
Definition: huffman.cpp:28
int main()
Definition: spiral_print.cpp:69
#define MAX
Definition: paranthesis_matching.cpp:16
vector< vector< ll > > power(const vector< vector< ll >> &A, ll p)
Definition: matrix_exponentiation.cpp:76
int main()
Definition: successive_approximation.cpp:20
void tests()
Definition: insertion_sort.cpp:109
int LinearSearch(int *array, int size, int key)
Definition: linear_search.cpp:16
bool IsPrime(int number)
Definition: primality_test.cpp:18
double nCr(double n, double r)
Definition: binomial_dist.cpp:47
int values[10]
Values in the tower.
Definition: tower_of_hanoi.cpp:13
void qr_decompose(const std::valarray< std::valarray< T >> &A, std::valarray< std::valarray< T >> *Q, std::valarray< std::valarray< T >> *R)
Definition: qr_decompose.h:146
int main()
Definition: insertion_sort.cpp:150
void genArray(int **a, int r, int c)
Definition: spiral_print.cpp:12
int main()
Definition: comb_sort.cpp:88
static std::ostream & operator<<(std::ostream &out, matrix< T > const &v)
Definition: hill_cipher.cpp:54
int main()
Definition: interpolation_search.cpp:37
std::string add(std::string a, std::string b)
Definition: string_fibonacci.cpp:24
int main()
Definition: addition_rule.cpp:30
std::string toupperRoman(int n)
Definition: decimal_to_roman_numeral.cpp:58
#define LIMS
Definition: qr_eigen_values.cpp:20
double bayes_AgivenB(double BgivenA, double A, double B)
Definition: bayes_theorem.cpp:14
int sum(int id)
Definition: fenwick_tree.cpp:54
int main()
Definition: quick_sort.cpp:82
FenwickTree(int x)
Definition: fenwick_tree.cpp:39
Point(double a=0.f, double b=0.f)
Definition: smallest_circle.cpp:23
int main()
Definition: primality_test.cpp:31
struct list * next
pointer to next link in the chain
Definition: hash_search.cpp:31
int top
top tower ID
Definition: tower_of_hanoi.cpp:15
Definition: line_segment_intersection.cpp:12
void TH(int n, tower *From, tower *Using, tower *To)
Definition: tower_of_hanoi.cpp:52
int interpolation_search(int arr[], int value, int len)
Definition: interpolation_search.cpp:15
void push(char ch)
push byte to stack variable
Definition: paranthesis_matching.cpp:26
int main()
Definition: bogo_sort.cpp:104
int main()
Definition: merge_sort.cpp:102
char pop()
pop a byte out of stack variable
Definition: paranthesis_matching.cpp:29
int InterpolationSearch(int A[], int n, int x)
Definition: interpolation_search2.cpp:15
double poisson_expected(double rate, double time)
Definition: poisson_dist.cpp:25
double poisson_x_successes(double expected, double x)
Definition: poisson_dist.cpp:46
int main(void)
Definition: rabin_karp.cpp:105
T random_shuffle(T... args)
void quickSort(int arr[], int low, int high)
Definition: quick_sort.cpp:63
std::vector< int > getFailureArray(const std::string &pattern)
Definition: knuth_morris_pratt.cpp:33
void show_pascal(int **arr, int n)
Definition: pascal_triangle.cpp:18
int rabin_karp(const std::string &str, const std::string &pat)
Definition: rabin_karp.cpp:83
void test()
Definition: caesar_cipher.cpp:100
void get_input()
Definition: ternary_search.cpp:36
bool PointInCircle(const std::vector< Point > &P, const Point &Center, double R)
Definition: smallest_circle.cpp:72
void tests()
Definition: comb_sort.cpp:73
Definition: list_array.cpp:8
double binomial_variance(double n, double p)
Definition: binomial_dist.cpp:29
void shell_sort(std::vector< T > *arr)
Definition: shell_sort2.cpp:75