回答編集履歴
1
注釈を追加
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()
|