回答編集履歴
1
データ読みコードを追加
answer
CHANGED
@@ -28,4 +28,41 @@
|
|
28
28
|
for (int i = 0; i < n; i++) printf(" %d", a[i]);
|
29
29
|
putchar('\n');
|
30
30
|
}
|
31
|
-
```
|
31
|
+
```
|
32
|
+
**追記**
|
33
|
+
```c
|
34
|
+
#include <stdio.h> // printf, fgets, scanf
|
35
|
+
#include <stdlib.h> // strtol
|
36
|
+
|
37
|
+
#define N 500
|
38
|
+
|
39
|
+
int main(void)
|
40
|
+
{
|
41
|
+
char buf[1024], *p = buf, *q;
|
42
|
+
int a[N], n, d, r;
|
43
|
+
printf("元の配列: ");
|
44
|
+
if (!fgets(buf, sizeof buf, stdin)) return 1;
|
45
|
+
for (n = 0; n < N; n++) {
|
46
|
+
a[n] = strtol(p, &q, 10);
|
47
|
+
if (q == p) break;
|
48
|
+
p = q;
|
49
|
+
}
|
50
|
+
if (n == 0) return 2;
|
51
|
+
printf("どちらにシフトしますか(1:左 2:右): ");
|
52
|
+
if (scanf("%d", &d) != 1 || d < 1 || d > 2) return 3;
|
53
|
+
printf("いくつシフトしますか(1~%d): ", n - 1);
|
54
|
+
if (scanf("%d", &r) != 1 || r < 1 || r >= n) return 4;
|
55
|
+
if (d == 2) r = n - r;
|
56
|
+
for (int i = 0; i < n; i++) printf(" %d", a[i]);
|
57
|
+
printf("\n n = %d, r = %d\n", n, r);
|
58
|
+
}
|
59
|
+
```
|
60
|
+
実行例
|
61
|
+
```text
|
62
|
+
元の配列: 1 2 3 4 5 6 7
|
63
|
+
どちらにシフトしますか(1:左 2:右): 2
|
64
|
+
いくつシフトしますか(1~6): 3
|
65
|
+
1 2 3 4 5 6 7
|
66
|
+
n = 7, r = 4
|
67
|
+
```
|
68
|
+
疑問点があればコメントをお願いします。
|