如何检查用户是否输入两次相同的号码? C ++帮助?

时间:2011-11-11 10:00:46

标签: 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,程序应该告诉用户这是一个无效的条目。

任何帮助?

5 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

将之前的号码存储在std::vector中,并在读取后续号码后使用先前读取和存储的号码测试是否相等。

答案 2 :(得分:0)

您可以使用std::setstd::pair - s或某些std::map来保持字母和数字之间的关联。

答案 3 :(得分:0)

您应该使用容器(可能是std :: set)来存储数字。您可以使用方法“insert”插入,并使用方法“find”测试数字是否在集合中。

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

答案 4 :(得分: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;
}