-3

この次のコードブロックを考えて、それが機能することを確認するのに苦労しています。

入力可能な単語は 3 つあり、A、B、C と呼びます。

    //The following if-else block sets the variables TextA, TextB, and TextC to the    appropriate Supply Types.
if(strcmp(word,TextB)!=0 && strcmp(word,TextC)!=0 && i==1 && strcmp("",TextB)!=0) {
     strcpy(TextA,word);
}
else if(strcmp(word,TextA)!=0 && strcmp(word,TextC)!=0 && i==1 && strcmp("",TextC)!=0) {
  strcpy(TextB,word);
}
else if(strcmp(word,TextB)!=0 && strcmp(word,TextA)!=0 && i==1) {
  strcpy(TextC,word);
}

私が実現したいのは、TextA に何も含まれていない場合 (i=1 のときに AKA の周りで初めて; これはすべてループ内にあります)、TextA に単語を書き込むことです。ただし、TextA に何かが含まれている場合は、Word を TextB に書き込みます。TextB に何かが含まれている場合は、TextC を word に設定します。選択肢が 3 つしかないため、単語を適切な場所にコピーし直すことができます。

4

1 に答える 1

1

さて、あなたはこれをループで行っていますが、3つのチェックすべてが持っているi==1ので、これらのブロックの1つに一度だけ入ることを意味します。(i1の場合)。

if通常、 /条件付きブロック全体で同じチェック(論理的にAND)があるelse if場合は、ブロックからそれを引き出すことができます。

if (i == 1){
   //do all the other checks
}

しかし、それがあなたが本当にやりたいことであるかどうかを考えてください...あなたが解決しようとしていることのあなたの説明に基づいて、私はあなたがiまったくチェックする必要はないと思います。
このSOの質問で書いたことを読むと、コードは実際にそこから出てきます。

TextAに何も含まれていない場合は、TextAに単語を書き込みます。TextAに何かが含まれている場合は
、TextBに単語を書き込みます
。TextBに何かが含まれている場合は、TextCをwordに設定します。

したがって、そのロジックに従うコードは次のとおりです。

if (strlen(TextA) == 0)       // if TextA has nothing in it,
    strcpy(TextA, word);      // then write word to TextA
else if (strlen(TextB) == 0)  // else (if TextB doesn't have anything in it)
    strcpy(TextB, word);      // write word to TextB
else                          // if TextA and TextB already have something
    strcpy(TextC, word);      // then write word to TextC
于 2013-02-08T20:11:25.007 に答える