#c
#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. Вам нужно сохранить все числа и каждый раз искать по ним число, введенное пользователем.
Ответ №1:
Вы можете использовать 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;
}
Ответ №2:
Сохраните предыдущий номер (ы) в std::vector
и проверьте на равенство после считывания последующего номера (ов) с ранее прочитанными и сохраненными номерами.
Ответ №3:
Вы могли бы использовать std::set
of std::pair
-s или some std::map
, чтобы сохранить связь между буквой и числом.
Ответ №4:
Для хранения чисел следует использовать контейнер (std:: set, вероятно). Вы можете вставить с помощью метода «insert» и проверить, есть ли число в наборе с помощью метода «find».
Ответ №5:
std::map<char, int> m;
std::map<char,int>::iterator it;
it=m.find(userLetter);
if(it!=m.end() amp;amp; *it==userNumber)
{
std::cout << "it's an invalid entry" << std::endl;
continue;
}
Комментарии:
1. Я считаю, что между буквой и цифрой нет соответствия. Он просто хочет отфильтровать числа, введенные дважды.