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

回答編集履歴

1

追記

2021/07/15 08:13

投稿

otn
otn

スコア86362

answer CHANGED
@@ -1,3 +1,24 @@
1
1
  あれ、前回回答したけど。
2
2
 
3
- ヒストリー番号を32で割った余りを添え字にすればいいです。
3
+ ヒストリー番号を32で割った余りを添え字にすればいいです。
4
+
5
+ #追記
6
+ > が満たされるイメージがしにくいです。32個を溢れた場合、どのような動作になりますでしょうか?
7
+
8
+ 添え字に書くときに、`history[i]`と書かずに`history[i%32]`と書くだけですが。
9
+
10
+ イメージしにくいというのがよく分からないです。
11
+ あるいは、「最後まで使ったら先頭に戻って再利用する」という発想が出来てない?
12
+ いままで日常生活でそういうことしたことないのでしょうか?
13
+ ```C
14
+ // histN ・・・ 現在のヒストリー番号を保持しているint型変数とする
15
+
16
+ // ヒストリー保存
17
+ history[histN % 32] = 今の行の入っているバッファのアドレス;
18
+
19
+ // 直近32個の表示(histNは次の番号になっているとする)
20
+ int i;
21
+ for(i=histN-32; i<histN; i++){
22
+ printf("%d %s\n",i,history[i % 32]);
23
+ }
24
+ ```