【问题标题】:How would I add a counter in this scenario? [closed]在这种情况下如何添加计数器? [关闭]
【发布时间】:2021-02-13 02:50:59
【问题描述】:

编程新手。我做了一个简单的程序来读取银行密码,但我得到了一个无限循环。我知道我应该添加一个计数器,因为这是我的老师所说的,但我不知道如何实际实现它。如果有人可以提供帮助,那就太棒了。

#include <iostream>
using namespace std; 

int main() {
  int pin = 12345;
  int input;
  

  cout << "Please enter your pin." << endl;
  cin >> input;
  while (input != 12345) {
    cout << "INCORRECT PIN. TRY AGAIN." << endl;
    cout << "Please enter your pin." << endl;

    

  }
  else if (input==12345) {
    cout << "ACCESS GRANTED. WELCOME TO YOUR BANK" << endl;
  }

 return 0;
} 

【问题讨论】:

  • 第一步是定义要实现的规范。比如,计数器要算什么?
  • 计数器是指多少次不正确的密码?
  • 这是什么?一会儿... else 循环?我听说它是​​一些奇怪的 Python 东西,但我不知道它也存在于 C++ 中:-)
  • 你只读过一次input,即使第一次读错了
  • 如果你想计算不正确的 pin 条目,而不是只在循环外取一个名为 wrongPinCount 的变量,当它达到最大努力数时,就打破循环。

标签: c++ counter


【解决方案1】:

您不会在 while 循环中再次接受输入。这就是它运行无限循环的原因。 试试这个

int main() {
  int pin = 12345;
  int input;
  

  cout << "Please enter your pin." << endl;
  cin >> input;
  while (input != pin) {
    cout << "INCORRECT PIN. TRY AGAIN." << endl;
    cout << "Please enter your pin." << endl;
    cin >> input;
  }
  if (input==pin) {
    cout << "ACCESS GRANTED. WELCOME TO YOUR BANK" << endl;
  }

 return 0;
} 

如果你想要一些计数器,比如用户输入错误密码超过 3 次,你不应该让他访问银行账户。

int main() {
  int pin = 12345;
  int input;
  const int times = 3;
  int counter = 0;

  do{
    cout << "Please enter your pin." << endl;
    cin >> input;
    if(input != pin){
       cout << "INCORRECT PIN. TRY AGAIN." << endl;
       counter++;
    } else {
       break;
    }
    if(counter == times){
        cout << "You cannot access your account. You enter wrong pin for 3 times\n";
        return 0;
    }
  }while(input != pin);
  if (input==pin) {
    cout << "ACCESS GRANTED. WELCOME TO YOUR BANK" << endl;
  }

 return 0;
}

【讨论】:

  • 如果用户关闭stdin 但+1,我会让它退出if(not (cin &gt;&gt; input)) break;
  • 我们需要给他至少一些尝试输入正确的密码..
  • 是的,if(not (cin &gt;&gt; input)) break; 就是这样做的。只有在根本没有输入整数时才会中断。您可能需要考虑使用std::getline(std::cin, &lt;some std::string variable&gt;),然后将其转换为int
猜你喜欢
  • 1970-01-01
  • 2020-04-17
  • 2019-01-15
  • 2020-12-27
  • 2021-11-22
  • 2018-11-22
  • 2021-08-17
  • 1970-01-01
  • 2022-07-21
相关资源
最近更新 更多