Quân đội Ấn Độ chuẩn bị tổ chức một cuộc tập kích bất ngờ vào một thành phố của Pakistan. Tổng thống Ấn Độ, Tổng tham mưu của quân đội Ấn Độ sẽ gửi một thông điệp đến tất cả các Trung tâm chỉ huy.
Lo sợ các thông điệp này sẽ bị quân địch theo dõi, quân đội Ấn Độ đã mã hóa những thông điệp này sử dụng một kĩ thuật mã hóa cơ bản. Khóa giải mã “K” sẽ được gửi đến các Trung tâm chỉ huy một cách bí mật.
Bạn được thuê để thiết kế để phát triển chương trình mã hóa các thông điệp. Chương trình của bạn phải quay vòng từng kí tự của thông điệp đi K vị trí để khiến quân địch không thể đọc được.
Viết hàm string cipher (int k, string message)
nhận 2 tham số đầu vào là khóa giải mã K và thông điệp message. Hàm trả về thông điệp đã được mã hóa theo khóa K
Lưu ý: Hàm chỉ mã hóa các kí tự và số (A−Z,a−z và 0−9). Tất cả các kí tự khác được giữ nguyên.
#include <bits/stdc++.h>
using namespace std;
string cipher (int k, string s) {
int l= s.size();
for (int i=0; i<l; i++) {
if ('A'<=s[i] && s[i] <='Z') {
if (k>26)k=k%26;
if(s[i]+k>'Z') {
s[i]= s[i]+k -'Z'-1+'A';
} else s[i]=s[i]+k;
}
if ('a'<=s[i] && s[i] <='z') {
if (k>26) k=k%26;
if(s[i]+k>'z') {
s[i]= s[i]+k -'z'-1+'a';
} else s[i]=s[i]+k;
}
if ('0'<=s[i] && s[i] <='9') {
if(k>10) k=k%10;
if(s[i]+k>'9') {
s[i]= s[i]+k -'9'-1+'0';
} else s[i]=s[i]+k;
}
}
return s;
}
int main() {
int k;
string message;
cin >> k >> message;
cout << cipher(k, message);
}
em viết code như thế này nhưng có một vài trường hợp lại không ra đáp án đúng
ví dụ như : k=23 và s= “rotating” thì sẽ ra đáp án đúng còn nếu s=“5-rotating” thì lại ra sai
anh chị xem giúp em xem sai ở đâu với ạ