我的for循环有问题。它通过两个阵列并比较帐号和PIN。 if
语句会检查帐号和PIN的组合是否正确。由于我从原始(user_Account != accounts[i] || user_Pin != pins[i])
更改了此部分(user_Account == accounts[i] && user_Pin != pins[i])
,因此会发生这种情况。在此之前它工作得很好,但我担心如果有人输入了错误的帐户,那么程序可能会崩溃,所以我做了那个改变。以下是代码的一部分,如果需要,我可以发布更多内容。请记住一件事我在上课,所以没有高级的更改或建议,我需要现有水平的东西。我感谢任何帮助。
for (int i = 0; i < 6; i++)
{
if(user_Account == accounts[i] && user_Pin == pins[i])
{
cout << "You entered correct combination of account and pin number." << endl;
}
else if(user_Account != accounts[i] || user_Pin != pins[i])
{
cout << "You entered wrong account and/or wrong pin number. Please start over." << endl;
return 0;
}
}
答案 0 :(得分:0)
从
转换后(user_Account == accounts[i] && user_Pin != pins[i])
到
(user_Account != accounts[i] || user_Pin != pins[i])
你应该转换为:
(user_Account != accounts[i] || user_Pin == pins[i])
您实际上正在应用名为De Morgan's laws的内容,并且至少值得阅读历史记录:)。
关于你是否应该将单独的if-else子句用于帐户失败而不是PIN失败 - 这是一种设计决策。如果有人试图闯入你的银行&#39;并且正在猜测PIN和帐号,例如,查看某人的肩膀,然后单独的错误消息将帮助他/她更快地找到正确的组合。另一方面,如果(更有可能)客户刚刚输入错误,那么告诉他们的消息是很好的。它取决于你。
答案 1 :(得分:0)
如果只有两种情况:
帐号ID和密码匹配
或
至少有一个不匹配
我会为自己省去第二个条件的头痛,让检查结果如下:
if (user_Account == accounts[i] && user_Pin == pins[i])
// accounts match message
else
// accounts don't match message
此外,你的for循环上有一个指针:你可能想确保当其中一个数组用完时for循环没有继续,所以 for loop 签名可能是这样的:
for (int i = 0; (i < accounts::size) && (i < pins::size); i++)