2017-08-17 6 views
-5

私はいくつかの初心者のプロジェクトで作業しています.1つは、2つの特定の名前(AliceとBob)を迎えるプログラムを作成することです。私は最善の方法は、whileループを使用することだと思ったので、名前がBobまたはAliceと等しくない限り、ユーザーに正しい名前を入力させ続けるでしょう。ただし、BobやAliceの場合でも、プログラムはwhileループで出力を出力します。私はこの1つの権利を置くために少しの助けが必要です。事前に多くの感謝。whileループで文字列を使用する(OR演算子)

#include <iostream> 
#include <string> 

int main() 
{ 

    std::cout << "Please enter the correct name(s): "; 

    std::string name = " "; 
    std::cin >> name; 

    while (name != "Alice" || name!= "Bob") 
    { 
     std::cout << "Please enter the correct name(s): "; 
     std::cin >> name; 
    } 
    if (name == "Alice") 
     std::cout << "Hi Alice!" << std::endl; 
    if (name == "Bob") 
     std::cout << "Hi Bob!" << std::endl; 
} 
+8

あなたは&& - と意味します。 –

+1

真剣に、これは基本的なロジックです。コンピュータをシャットダウンして、人間の言語でlogic_を紙の上に書いてください。それは理にかなっていますか?もしそうなら、それをC++に翻訳してみてください。 – ForceBru

+5

'name!=" Alice "|| name!= "Bob"は一度に名前を2つにすることはできないので、常に真です。名前が「Alice」と「Bob」の両方に等しい場合は、偽になる可能性があります。論理を通じて考えると理にかなっています。 – Carcigenicate

答えて

0

まず、C++の世界へようこそ!さあ、あなたの問題に移りましょう。この行を見てみると、

while (name != "Alice" || name!= "Bob") 

他にも述べたように、これには問題があります。あなたは基本的に言っています:

while (the name is NOT "Alice" OR the name is NOT "Bob") 

名前は一度に2つにすることはできません。この状態になるためには、あなたの名前はBob AliceまたはAlice Bobでなければなりません。次のコード行を見ると、

std::cin >> name; 

これは不可能です。コンピュータは単語を1つしか取っていません。条件は決して打撃を受けません。これを修正するには、次の操作を行う必要があります。

while (name != "Alice" && name != "Bob") 

これで問題は解決します。また、コードを改善したい場合は、次の操作を行うことができます:

#include <iostream> 
#include <string> 

int main() 
{ 
std::string name = ""; 

std::cout << "Please enter the correct name: "; 
std::cin >> name; 

while (name != "Alice" && name != "Bob") 
{ 
    std::cout << "Please enter the correct name: "; 
    std::cin >> name; 
} 

std::cout << "Hi " << name << "!" << endl; 
+0

ようこそありがとうございます:)。私は頭を抱えて座っている。と&&演算子。それは明らかにそうではありませんが、私はこの文脈でORが理にかなっていると考え続けているので、イライラしています! – Njgardner90

+0

@ Njgardner90という問題を書く簡単な方法を教えていただきありがとうございます。どこから来ているのか分かります。私たち全員が始めました。この[link](http://www.learncpp.com/cpp-tutorial/36-logical-operators/)をよくお読みになり、&&と||をよく理解してください。演算子。 – Sam67

関連する問題