0

それが私のコードです。私がここでやろうとしているのは、名前が間違っている場合に名前 ( pass など) を要求するコードです。次に、プログラムはこれら 3 つのエラー メッセージを表示し、2 つのホワイトリストに登録された名前のいずれかになるまで名前を再度尋ねます。が与えられたら、コードを続けてください。

int main(void)
{
setlocale(LC_ALL, "Portuguese");
string Name = "";
cout << "Whats your name dude ?" << endl;
cin >> Name;

if (Name == "ighor" ||
    Name == "indio")
    {
    cout << "Welcome friend =D" << endl;
    system("pause");
    system("cls");
    }
    else
    {
        do  
        {
            cout << "Sorry, wrong name =[" << endl;
            system("pause");
            system("cls");
            cout << "I'll give you another chance =]" << endl;
            system("pause");
            system("cls");
            cout << "Write your name again" << endl;
            cin >> Name;

            if (Name == "ighor" ||
                Name == "indio")
            {
                continue;
            }

        }   while (Name != "ighor" ||
                   Name != "indio");


    }

cout << "Whats up" << Name << endl;
system("pause");
system("cls");      
        return 0;

}

このコードを使用したテストでは、次
のことがわかりました。ホワイトリストに登録された名前 ( indio または ighor ) を入力すると、正しい名前のメッセージが表示されます。

「ようこそ友達=]」。

間違った名前を入力すると、間違った名前のメッセージが表示されます。名前をもう一度入力するように求められます。ホワイトリストに登録されている名前の 1 つを入力すると、それは間違った名前であり、名前も間違っていると言い続けます。間違った名前のメッセージを表示します。

4

5 に答える 5

0

私が変更したすべての答えをありがとう

continue;

為に

`break;`

そしてそれは完璧に機能しました=)しかし、コードがあまりにも混乱していたので、あなたがくれた他のヒントを少し勉強して、よりきれいにすることができます= Dこのコードには別の疑問があります

cin >> RPI;
if (RPI == "Sim"||RPI == "sim"||RPI == "vou"||RPI == "Vou")

ここで私が欲しかったのは、答えを「チェック」して、私が「シム」または「Vou」である場合に何かを作成することでした(「はい」と「私はします」を意味しますが、とにかく)皆さんが私に言ったことを使用できると思います「&&」を「II」に置き換えると、条件が正しくなります。方法またはコマンドがあった場合、この回答のためだけに大文字と小文字を区別しないので、その人が書くことができる両方の方法を入れる必要はありませんでした. それはただの学習コードです。

初めての投稿で本当に驚きました。たくさんの回答があり、速すぎました。サポートしてくれてありがとう。あなたたちが支配します。良いコーディング。

于 2016-02-18T17:24:23.840 に答える
0

do-whileループ内のロジックに欠陥があります。それ以外の

            continue;

あなたが必要

            break;

continue;ループの次の繰り返しに進みます。break;ループを壊します。

また、whileステートメントのロジックが正しくありません。以下を使用する必要があります。

while (Name != "ighor" &&  Name != "indio");
                      ^^^ not ||

そうは言っても、必要なのはチェックの 1 つだけで、両方ではありません。

以下を使用できます。

do  
{
   ...

   if (Name == "ighor" || Name == "indio")
   {
      break;
   }

} while (true);

また

do  
{
   ...

}  while (Name != "ighor" && Name != "indio");
于 2016-02-18T16:12:43.547 に答える
0

これを試して:

int main() {

  string name;
  cout << "Whats your name dude ?" << endl;
  cin >> name;

  while (!(name == "ighor" || name == "indio")) {
    cout << "Sorry, wrong name =[" << endl;
    system("pause");
    system("cls");
    cout << "I'll give you another chance =]" << endl;
    system("pause");
    system("cls");
    cout << "Write your name again" << endl;
    cin >> name;
  }

  cout << "Whats up " << name << endl;
  system("pause");
  system("cls");      
  return 0;
}

それは短く、よりクリーンで、より表現力があり、それも機能します..

于 2016-02-18T16:14:15.607 に答える
-1

コードを正しくインデントしてください。交換してみる

continue;

break;

continue ステートメントは再びループを通過します。やりたいことはループを終了することです。今はテストできないので、うまくいくかどうか教えてください。

于 2016-02-18T16:11:56.867 に答える