2017-01-29 5 views
-4

タイトルが言うように、私は関数の出力を一度出力し、それを比較するたびに出力しない各配列要素。配列をchar配列と比較した後に結果を出力する手助けが必要

void westeros::display(Kingdom total[], int count, char m_name[]) 
{ 
    cout << "Searching for kingdom Mordor in Westeros" << endl; 
    cout << "------------------------------" << endl; 
    for (int i = 0; i < count; ++i) 
    { 
     if (total[i].m_name != m_name) 
     { 
      cout << m_name << " is not a part of Westeros" << endl; 
     } 
    } 
} 
+0

モルドールはウェスタスではなくアルダの一部です。恥を知れ。 ^^ – Downvoter

+0

単純なフラグで簡単に実現できます。さらに、比較された名前が「毎回」ではなく一致した場合にのみ印刷されます。私はあなたが実際に望んでいるか分からない。 1つまたは複数のミスマッチが検出された場合、1回印刷しますか? – Downvoter

+1

私は「westeros」が何であるかを調べなければなりませんでした。私には恥ずべき。 –

答えて

0

印刷後にブール値を追加し、trueに設定します。

void westeros::display(Kingdom total[], int count, char m_name[]) 
{ 
    cout << "Searching for kingdom Mordor in Westeros" << endl; 
    cout << "------------------------------" << endl; 
    bool hasPrinted = false; 
    for (int i = 0; i < count; ++i) 
    { 
     if (total[i].m_name != m_name && !hasPrinted) 
     { 
      cout << m_name << " is not a part of Westeros" << endl; 
      hasPrinted = true; 
     } 
    } 
} 
+0

条件付きで印刷する*ループの後に毎回 '!hasPrinted'をチェックする必要がなくなります。それはまた、より良い意図を表現します、IMO。 – Downvoter

+0

ありがとう、私はこれを念頭に置いておきます!私が比較をするとき。 –

+0

@VimalanKarunaFwuffehどういう意味ですか?それは私には明らかです。まず 'false'に設定され、印刷前に' false'であるかどうかをチェックし、印刷すると 'true'に設定され、if文が再び実行されません。 – Accumulator

関連する問題