回答編集履歴

1

データ読みコードを追加

2020/09/10 17:16

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -59,3 +59,77 @@
59
59
  }
60
60
 
61
61
  ```
62
+
63
+ **追記**
64
+
65
+ ```c
66
+
67
+ #include <stdio.h> // printf, fgets, scanf
68
+
69
+ #include <stdlib.h> // strtol
70
+
71
+
72
+
73
+ #define N 500
74
+
75
+
76
+
77
+ int main(void)
78
+
79
+ {
80
+
81
+ char buf[1024], *p = buf, *q;
82
+
83
+ int a[N], n, d, r;
84
+
85
+ printf("元の配列: ");
86
+
87
+ if (!fgets(buf, sizeof buf, stdin)) return 1;
88
+
89
+ for (n = 0; n < N; n++) {
90
+
91
+ a[n] = strtol(p, &q, 10);
92
+
93
+ if (q == p) break;
94
+
95
+ p = q;
96
+
97
+ }
98
+
99
+ if (n == 0) return 2;
100
+
101
+ printf("どちらにシフトしますか(1:左 2:右): ");
102
+
103
+ if (scanf("%d", &d) != 1 || d < 1 || d > 2) return 3;
104
+
105
+ printf("いくつシフトしますか(1~%d): ", n - 1);
106
+
107
+ if (scanf("%d", &r) != 1 || r < 1 || r >= n) return 4;
108
+
109
+ if (d == 2) r = n - r;
110
+
111
+ for (int i = 0; i < n; i++) printf(" %d", a[i]);
112
+
113
+ printf("\n n = %d, r = %d\n", n, r);
114
+
115
+ }
116
+
117
+ ```
118
+
119
+ 実行例
120
+
121
+ ```text
122
+
123
+ 元の配列: 1 2 3 4 5 6 7
124
+
125
+ どちらにシフトしますか(1:左 2:右): 2
126
+
127
+ いくつシフトしますか(1~6): 3
128
+
129
+ 1 2 3 4 5 6 7
130
+
131
+ n = 7, r = 4
132
+
133
+ ```
134
+
135
+ 疑問点があればコメントをお願いします。