teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

加筆

2021/10/30 23:19

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -3,4 +3,41 @@
3
3
  1. 1234 と AB をそれぞれ反転する 4321BA
4
4
  2. (1)全体を反転する AB1234
5
5
 
6
- はい、できあがり。
6
+ はい、できあがり。
7
+
8
+ ```C
9
+ #include <stdio.h>
10
+
11
+ // x[first~last-1] を反転する
12
+ void reverse(int x[], int first, int last) {
13
+ while ( first < last ) {
14
+ --last;
15
+ int tmp = x[first];
16
+ x[first] = x[last];
17
+ x[last] = tmp;
18
+ ++first;
19
+ }
20
+ }
21
+
22
+ // x[first~mid-1] と x[mid~last-1] を入れ替える
23
+ void rotate(int x[], int first, int mid, int last) {
24
+ reverse(x, first, mid);
25
+ reverse(x, mid, last);
26
+ reverse(x, first, last);
27
+ }
28
+
29
+ // x[0~n-1]をプリントする
30
+ void print(int x[], int n) {
31
+ for ( int i = 0; i < n; ++i )
32
+ printf("%d ", x[i]);
33
+ printf("\n");
34
+ }
35
+
36
+ int main() {
37
+ int x[6] = { 1,5,4,3,2,6 };
38
+ print(x,6);
39
+ rotate(x, 0, 2, 6);
40
+ print(x,6);
41
+ return 0;
42
+ }
43
+ ```