2011-11-11 5 views
0

私はちょっとした助けが必要です。ここではいくつかのコードの内訳です:ユーザーが同じ番号を2回入力したかどうかを確認するにはどうすればよいですか? C++ヘルプ?

char userLetter; 
int userNumber; 

cout << "Please enter a letter: "; 
cin >> userLetter; 

while(userLetter == 'A') 
{ 
    cout << "Please enter a number: "; 
    cin >> userNumber; 

    //do something in the loop here 

    cout << "Please enter a letter: "; 
    cin >> userLetter; 
} 

今私は基本的に彼は複数回同じ番号を入力した場合、彼のエントリが無効であることをユーザに教えてくれる何かを追加する必要があります。たとえば、ユーザーが文字Aと数字2を入力したとします。whileループは、必要な処理を実行した後、ユーザーに再度文字を要求します。ユーザーが 'A'をもう一度入力したとします。その後、ループはユーザーに別の番号を尋ねます。数字が2であれば、プログラムはユーザーに無効なエントリーであることを伝える必要があります。

助けが必要ですか?

+1

。 –

答えて

0

std::vectorに前の番号を格納し、それ以前に読み取られ、保存された番号で後続の番号を読み取った後で同等かどうかをテストします。

2

std::setを使用して、入力したすべての番号を覚えて、後続の各番号が既にセットに含まれているかどうかを確認できます。

std::set<int> numbers; 
while(userLetter == 'A') 
{ 
    cout << "Please enter a number: "; 
    cin >> userNumber; 

    if (numbers.find(userNumber) != numbers.begin()) 
    { 
      //prompt error here 
      continue; 
    } 
    else 
    { 
      numbers.insert(userNumber); 
    } 

    //do something in the loop here 

    cout << "Please enter a letter: "; 
    cin >> userLetter; 
} 
0

あなたは、文字と数字の間の関連付けを維持するためにstd::setstd::pairの-s、またはいくつかのstd::mapを使用することができます。

+0

この例からは、とにかく "A"だけが受け入れられるようです... –

0

数字を格納するには、コンテナ(おそらくstd :: set)を使用する必要があります。メソッド "insert"で挿入し、 "find"メソッドで数値がセットに含まれているかどうかをテストできます。あなたはすべての番号を格納し、それを介してユーザによって入力された番号のたびに検索する必要が

http://www.cplusplus.com/reference/stl/set/

0
std::map<char, int> m; 
std::map<char,int>::iterator it; 

it=m.find(userLetter); 
if(it!=m.end() && *it==userNumber) 
{ 
    std::cout << "it's an invalid entry" << std::endl; 
    continue; 
} 
+0

私は文字と数字の間には対応がないと思います。彼はちょうど2回入力された数字を除外したい。 –

関連する問題