2017-09-02 12 views
-5

私はここで新しいです。私はifステートメントを理解していません:私は== 0、それは繰り返しを排除します。使い方?ありがとう。誰かがこのC++コードについて説明できますか?

+0

'words [i - 1]!= words [i]'の場合にのみwordを出力します。これは以前のものとは異なります。 'i == 0'は保護にすぎません。インデックス0には前のものがありません。 –

+3

[初心者のC++ブック](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)を手に入れてください。そして[[namespace std;を使うのは悪い習慣です](https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice)! – tambre

+0

既知の入力文字列(いくつかの単語が複数回使用されています)を含むデバッガで実行し、最後のループを1回実行する間に何が起こるかを確認してください。 – WhozCraig

答えて

0

私は0に等しい場合は、単語を行うことができないので、あなたは言葉[I-1]を見ることができない[-1]

さらには、使用時に||最初の式が真である場合、2番目の式はチェックされません。

i == 0 || words[i - 1] != words[i] iは0に等しいので、式words[i - 1] != words[i]はチェックされず、プログラムがクラッシュしないため、最初の単語を印刷できます。 次に、iが0以外の場合、最初の表現は真ではなく、2番目の表現がチェックされます。 unrepetitionの部分については


あなたの配列をソートするには、その同じ言葉が次々です。 は、その後、あなたが単語を印刷することができ、前の単語が同じでないかどうかを確認する必要があり


方法words[i - 1] != words[i]作品:長さのためのstd ::文字列の

、オペレータ==とは!=表情各文字列、および各

Comparison operator for std::string

また、文字列内の文字、前の単語のwords[i-1]外観、およびの現在のものをと比較して比較します。

ここで、2つの連続した単語が長さと文字で同じでない場合、この式は真です。 あなたは、アレイ内の単語dogcatcatcat_を持っている場合、dogが(理由i == 0一部の)最初に印刷され、2番目の単語catが印刷された単語は、("cat" == "cat")と同一であるため、その後、epressionがfalseで、かつfinaly、cat_cat

+0

お返事ありがとうございます。あなたは単語[i - 1]!= words [i]の仕組みを説明できますか?私が入力した場合:犬の猫のロック – zen

+0

それは怪しげなことを説明したり、不明な点や質問がある場合は、躊躇しないでください –

-1

あなたのプログラムは、最初の単語とソートされた単語のリストで繰り返されないすべての単語を表示するようです。一意の単語を探す場合は、std::uniqueを試してみてください。

0

vectorがすべてstringsであるすべての単語をソートし、ユニークワードのみを出力するプログラムです。

i==0

は、それが常に一意になりますので、現在の単語がある場合は、

word[i-1]!=word[i]チェック(存在しないその前の言葉から)以前に最初の単語を比較することはできませんので、最初の単語を意味し、その言葉を前に印刷したものとは異なる。

||は、Logical Orオペレータです。

関連する問題