回答編集履歴

1

注釈を追加

2022/11/25 08:22

投稿

fana
fana

スコア11658

test CHANGED
@@ -4,14 +4,17 @@
4
4
 
5
5
  ```C
6
6
  int H[ 2 + 26 ] = { 0 }; //配列1個目
7
- int Idx( char c ){ return (c==' ')*27 + ('a'<=c && c<='z')*(c-'a'+1); }
7
+ int Idx( char c ){ return (c==' ')*27 + ('a'<=c && c<='z')*(c-'a'+1); } //文字cに対応する H[] のindexを返す
8
8
 
9
+ //配列の中身を書き換える作業.
10
+ //sの指す先からn文字をcに変えて,その次の位置を返す
9
11
  char *F( char *s, char c, int n )
10
12
  {
11
13
  *s = (n<=0)**s + (n>0)*c;
12
14
  return ( n<=0 ? s : F(s+1,c,n-1) ); //ココが「if等の条件分岐」や「反復」と見なされるならアウト
13
15
  }
14
16
 
17
+ //これは H[] の値を用いての F を呼び出しを簡単に書くだけのヘルパ.
15
18
  void G( char **s, char c ){ *s = F( *s, c, H[Idx(c)] ); }
16
19
 
17
20
  int main()