Computer >> Máy Tính >  >> Lập trình >> C ++

Polybius Square Cipher trong C ++

Trong bài toán này, chúng tôi được cung cấp một chuỗi và chúng tôi phải tìm mã hóa số nguyên của nó bằng cách sử dụng Polybius Square Cipher .

Mật mã hình vuông Polybius

Nó là một bảng được sử dụng để chuyển đổi các chữ cái thành số. Bảng mã hóa tiếng Anh là bảng 5X5, tức là chứa 25 ô cho 26 bảng chữ cái của từ điển tiếng Anh. Các chữ cái i và j được giữ cùng một ô.

Bảng sau đây hiển thị Mật mã hình vuông đa giác -


1 2 3 4 5
1 A B C D E
2 F G H I, J K
3 L M N O P
4 Q R S T Ư
5 V W X Y Z

Chữ cái của các bảng có thể được sắp xếp ngẫu nhiên. Ngoài ra, kích thước của bảng có thể được thay đổi dựa trên số lượng bảng chữ cái của ngôn ngữ.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào - Xin chào

Đầu ra - 2315313134

Để giải quyết vấn đề này, chúng tôi sẽ tạo một chương trình để lấy từng cặp số và sau đó kiểm tra chữ cái tương ứng.

Ví dụ

Chương trình hiển thị hình ảnh minh họa về giải pháp của chúng tôi -

#include <cmath>
#include <iostream>
using namespace std;
void LetterToNumber(string str) {
   int R, C;
   for (int i = 0; str[i]; i++) {
      R = ceil((str[i] - 'a') / 5) + 1;
      C = ((str[i] - 'a') % 5) + 1;
      if (str[i] == 'k') {
         R = R - 1;
         C = 5 - C + 1;
      }
      else if (str[i] >= 'j') {
         if (C == 1) {
            C = 6;
            R = R - 1;
         }
         C = C - 1;
      }
      cout<<R<<C;
   }
   cout << endl;
}
int main() {
   string str = "tutorialspoint";
   cout<<"The numeric encryption of string '"<<str<<"' is : ";
   LetterToNumber(str);
   return 0;
}

Đầu ra

The numeric encryption of string 'tutorialspoint' is: 4445443442241131433534243344