AOJ_0017 Caesar Cipher
問題
getlineの使い方がわからないのでコードが変になった
↓恐ろしく非効率なコード
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; char text[3][5] = { "this", "the", "that", }; char S[100]; char A[100]; int len; void solve(){ char t[100]; char word[100]; for(int i = 0; i <= 26; i++){ //printf("%d\n", i); for(int j = 0; j <= len; j++){ if('a' <= S[j] && S[j] <= 'z') A[j] = (S[j] + i - 'a') % 26 + 'a'; else A[j] = S[j]; } //printf("%s\n", A); int p = 0; while(1){ int j; for(j = p; A[j] != 0 && A[j] != ' '; j++){ word[j-p] = A[j]; } word[j-p] = 0; for(int k = 0; k < 3; k++){ if(strcmp(&text[k][0], word) == 0) return; } if(A[j] == 0) break; p = j + 1; } } } int main(){ char c; while(1){ int f; for(len = 0;; len++){ if(scanf("%c", &c) == EOF) return 0; if(c == '\n') break; S[len] = c; } if(len == 0) return 0; S[len] = 0; solve(); printf("%s\n", A); } return 0; }