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

回答編集履歴

3

修正

2024/05/12 06:17

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -48,7 +48,7 @@
48
48
  }
49
49
  ```
50
50
  このようにすると一致するかを判断する部分とその結果に基づいて出力する部分が明確になり、プログラムコードとして評価が上がります。
51
- さらに、 flag found という名前にすることでその変数が何を表すかが明確になります。
51
+ さらに、 flag found という名前にすることでその変数が何を表すかが明確になります。
52
52
  ```c
53
53
  //一致するものがあるか
54
54
  int found=0;
@@ -65,4 +65,4 @@
65
65
  printf("No");
66
66
  }
67
67
  ```
68
- とすると、`if(found) print ~` が「もし見つかったら~を表示」と見えてくるでしょう。
68
+ `if(found) print ~` が「もし見つかったら~を表示」と見えてくるでしょう。

2

追記

2024/05/12 05:48

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -47,4 +47,22 @@
47
47
  printf("No");
48
48
  }
49
49
  ```
50
- このようにすると一致するかを判断する部分とその結果に基づいて出力する部分が明確になり、プログラムコードとして評価が上がります。
50
+ このようにすると一致するかを判断する部分とその結果に基づいて出力する部分が明確になり、プログラムコードとして評価が上がります。
51
+ さらに、 flag と found という名前にすることでその変数が何を表すかが明確になります。
52
+ ```c
53
+ //一致するものがあるか
54
+ int found=0;
55
+ for(int i=0;i<n;++i){
56
+ //…
57
+ if(strcmp(s,t[i]) == 0){
58
+ found=1;
59
+ }
60
+ }
61
+ //一致状態によって Yes/No を出力
62
+ if(found) { //if 文は () 内が 0 で無い場合を成立とみなすので、 0 か 1 にしかならない変数なら "==1" は無くても良い
63
+ printf("Yes");
64
+ } else {
65
+ printf("No");
66
+ }
67
+ ```
68
+ とすると、`if(found) print ~` が「もし見つかったら~を表示」と見えてくるでしょう。

1

追加

2024/05/12 05:27

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  たとえば int の flag という変数を用意し、 for の前で 0 に初期化します。for の中でメニューに一致して Yes を表示したら、同時に flag を 1 にするようにします。
12
12
  ```c
13
13
  int flag=0;
14
- for(int i=0;i<n;++i) {
14
+ for(int i=0;i<n;++i){
15
15
  //…
16
16
  if (strcmp(s, t[i]) == 0){
17
17
  printf("Yes");
@@ -26,4 +26,25 @@
26
26
  if(flag == 0) {
27
27
  printf("No");
28
28
  }
29
- ```
29
+ ```
30
+ ---
31
+ 上は既存のプログラムの修正を最小にするような内容ですが、もう少し形を整えることが出来ます。
32
+ 新たに追加した flag 変数は No を表示する為に使いましたが、 Yes を表示することにも使えることに気が付かれるでしょうか。
33
+ つまり、for の中の if で一致した時に print するのでは無く、for の外で (No を表示する同じタイミングで) print するのです。
34
+ ```c
35
+ //一致するものがあるか
36
+ int flag=0;
37
+ for(int i=0;i<n;++i){
38
+ //…
39
+ if(strcmp(s,t[i]) == 0){
40
+ flag=1;
41
+ }
42
+ }
43
+ //一致状態によって Yes/No を出力
44
+ if(flag == 1) {
45
+ printf("Yes");
46
+ } else {
47
+ printf("No");
48
+ }
49
+ ```
50
+ このようにすると一致するかを判断する部分とその結果に基づいて出力する部分が明確になり、プログラムコードとして評価が上がります。