私は値を入力するようにユーザーに促すプログラムを持っています。ユーザーが入力する各値は、検証のためだけに存在する「その他の」ベクトルに配置されます。重複した値が入力された場合、ユーザは一意の値を入力するまでプロンプトを表示します。ベクトルへの重複エントリを防止しますか? C++
私が直面している主な問題は、コードを実行してベクターの結果を印刷する何らかの理由で、重複したエントリがあるようです。誰でも私にそれがなぜあるのか教えてもらえますか?
私のコードについては、以下を参照してください:
// prompt to continue
cout << "Would you like to continue? [Y]es, [N]o: ";
cin >> toContinue;
while (toContinue == 'Y')
{
bool isDuplicate = 0;
// prompt for product no.
cout << "Please enter product number: ";
cin >> productB;
// Validation check for duplicate entries
for (size_t i = 0; i < other.size(); i++)
{
if (productB == other[i])
isDuplicate = 1;
while (isDuplicate == 1)
{
cout << "You have already entered this product number!" << endl;
cout << "Please enter correct product number: ";
cin >> productB;
if (productB != other[i])
other.push_back(productB);
isDuplicate = 0;
}
}
// prompt to continue
cout << "Would you like to continue? [Y]es, [N]o: ";
cin >> toContinue;
}
'のstd ::代わりset'を使用してください。 – user0042
デバッガを使用してプログラムを実行したい場合があります。ヒント: '3 4 3'と入力するとどうなりますか? – Rakete1111
重複を検出したら、ユーザーに再入力を依頼します。直前に入力した1つの番号に対してこの新しい番号をチェックしますが、以前に入力したすべての番号に対してはチェックしません。つまり、ユーザーが「1」を入力した後、「2」を入力し、次に「1」を入力します。あなたは重複を検出し、再入力を求めます。彼らは '2'を入力し、あなたは' 2!= 1'をチェックして、うれしく2番目の '2'をベクトルに加えます。 –