回答編集履歴

2

サンプル追記

2018/06/27 07:35

投稿

HiroshiWatanabe
HiroshiWatanabe

スコア2160

test CHANGED
@@ -3,3 +3,77 @@
3
3
  ・一通り1文分のシフト作業が終わったら k を 0 で再初期化しないとそのまま繰り返し続けたら配列枠超過する
4
4
 
5
5
  ・scanfでは空白が区切りになるので「Jura gur」と入力してもこれでは「Jura」しか取れない
6
+
7
+
8
+
9
+
10
+
11
+ ```c
12
+
13
+ #include <stdio.h>
14
+
15
+ #include <string.h>
16
+
17
+
18
+
19
+ int main(void){
20
+
21
+ char ct1[80];
22
+
23
+ char ct3[80];
24
+
25
+ int k, key;
26
+
27
+
28
+
29
+ strcpy(ct1, "Jura gur png vf njnl gur zvpr cynl.");
30
+
31
+ for (key = 1; key <= 25; ++key) {
32
+
33
+ for (k = 0; ct1[k] != '\0'; ++k) {
34
+
35
+ if(('a' <= ct1[k]) && (ct1[k] <= 'z')){
36
+
37
+ ct3[k] = ct1[k] - key;
38
+
39
+ if(ct3[k] < 'a')
40
+
41
+ ct3[k] += 26;
42
+
43
+ }else if (('A' <= ct1[k]) && (ct1[k] <= 'Z')){
44
+
45
+ ct3[k] = ct1[k] - key;
46
+
47
+ if(ct3[k] < 'A')
48
+
49
+ ct3[k] += 26;
50
+
51
+ } else {
52
+
53
+ ct3[k] = ct1[k];
54
+
55
+ }
56
+
57
+ }
58
+
59
+ ct3[k] = '\0';
60
+
61
+ printf("%s\n",ct3);
62
+
63
+ if((strstr(ct3,"the ") != NULL) || (strstr(ct3,"The ") != NULL))
64
+
65
+ break;
66
+
67
+ }
68
+
69
+ printf("Success\n");
70
+
71
+ printf("key = %d, str = %s\n",key,ct3);
72
+
73
+ return 0;
74
+
75
+ }
76
+
77
+
78
+
79
+ ```

1

記載漏れがあったので追記

2018/06/27 07:35

投稿

HiroshiWatanabe
HiroshiWatanabe

スコア2160

test CHANGED
@@ -1,3 +1,5 @@
1
1
  ・key++; の位置がおかしい
2
2
 
3
3
  ・一通り1文分のシフト作業が終わったら k を 0 で再初期化しないとそのまま繰り返し続けたら配列枠超過する
4
+
5
+ ・scanfでは空白が区切りになるので「Jura gur」と入力してもこれでは「Jura」しか取れない