Mã hoá xâu theo quy tắc z->a, y->b,... a->z

Cả nhà giúp e bài này với, e làm ko ra. Đề bài:
Quy tắc của mật mã là đảo ngược. Ví dụ: z->a, y->b,x->c,....a->z.
INPUT: Xâu S trước khi giải mã (0<|S|<225).
OUTPUT: Xâu S sau khi giải mã.
Ví dụ:

IP: gsv rmerhryov draziw rh dzgxsrmt
OP: the invisible wizard is watching
#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s;
	long long n, i, j, l;
	getline(cin, s);
	n=s.length()-1;
	for(i=0;i<=n;i++){
		for(j=97;j<=122;j++){
			for(l=122;l>=97;l--){
				s[j]==s[l];
			}
		}
		cout << s[j];
	}
	return 0;
}

Từ a đến z như là từ 0 đến 25 :smiley: vậy thì suy ra quy luật thôi. 1 for.

Có thể bạn chưa biết :slight_smile:

'a' + 1 == 'b' // true
'y' - 'x' == 1 // true
3 Likes

Bạn tham khảo code của mình xem.

#include<string>
using namespace std;
int main()
{
    string s;
    long long n,i;
    getline(cin,s);
    n=s.length();
    for(i=0;i<n;i++)
    {
        if(65<=s[i] &&s [i]<=90)
            s[i]=(90-s[i]+65);
        else if(97<=s[i] && s[i]<=122)
            s[i]=(122-s[i]+97);
        else
            continue;
    }
    cout<<s;

}
1 Like

Độ dài chuỗi nhỏ hơn 225 thì khai báo kiểu long long liệu hơi “dài” không?

'Z' + 'A' - s[i]
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?