C++의 Ceasar 암호 용 작은 프로그램을 작성했습니다. 나는 논리로 잘하고 있다고 생각한다. 그러나, 내가 이해할 수없는 몇 가지 이상한 이유 때문에 ASCII 추가가 잘못 될 수 있습니다. 여기 내 코드가 있습니다 : 이 줄에 뭔가 잘못되었습니다 : "s [i] = (abs (s [i])) + k;" 다음과 같이절대 값이 ascii에서 올바르게 추가되지 않음
I 입력을 제공하고있다 :
87
출력 될해야
2
XY : ED : GH
내가 같은 출력을 얻고있다.
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n;
cin >> n;
string s;
cin >> s;
int k;
cin >> k;
k = k % 26;
for(int i = 0; i<s.size(); i++){
if((abs(s[i]) >=65 && abs(s[i]) <=90) || (abs(s[i]) >= 97 && abs(s[i]) <= 122)){
cout << "k is: "<<k << endl; //k should be 9
//for x abs(s[i]) should be 120
cout << "Absolute value is: "<<abs(s[i]) <<endl;
s[i] = (abs(s[i])) + k; // thish is not 129.. i am getting 127
cout << "After adding K: "<<abs(s[i]) << endl;
if((abs(s[i]) > 90) && (abs(s[i]) < 97))
s[i] = abs(s[i]) - 26;
if(abs(s[i]) > 122){
s[i] = abs(s[i]) - 26;
}
}
}
for(int i =0 ; i< s.size(); i++)
cout<<s[i];
return 0;
}
도움을 주실 수 있습니다. 감사.
문자열은 서명 된 문자로되어 있습니까? 그래서 129는 no-go이다. –
오, 나는 그것을 놓쳤다. 우리가이 문제를 해결할 수있는 빠른 방법은 무엇입니까? – hshantanu
내 대답 확인 :) –