【问题标题】:C++ how to reset a counter to 0 when a function is called?C ++如何在调用函数时将计数器重置为0?
【发布时间】:2020-09-05 00:58:43
【问题描述】:

我有一个关于将计数器重置为 0 的问题。下面是我的函数

std::string passorFail(double performanceScore, int threshHold)
{

  if (performanceScore > threshHold)
  {
    pass++; //if the judge socres a pass, 1 is added to the counter
    return "pass";
  }
  else
  {
    return "fail";
    
  }
}

一个名为 '''int pass = 0;''' 的 int 变量在作用域中全局声明,因为它是另一个函数所需要的。它的调用方式与此类似(PS 它必须是全局的)

somefunction(pass);

现在这就是计数器的行为方式。函数 passorFail 在遍历一个向量时总共被调用了 4 次,并且每次遍历它都会增加它应该的值。所以输出是这样的。

count after first pass: 3
count after first pass: 5//increases by 2
count after first pass: 8//increases by 3
count after first pass: 12//increases by 4

我想要做的是显示每次迭代中计数增加了多少,所以更像这样而不是上面显示的内容。

count of first pass: 3
count of first pass: 2
count of first pass: 3
count of first pass: 4

在 if 语句中返回“pass”后,我尝试将 pass 设置为 0,如下面的代码,但是它仍然显示通过的总数,而不是每次迭代中增加了多少。

if (performanceScore > threshHold)
  {
    pass++; 
    return "pass";
  }

任何帮助将不胜感激:)谢谢

【问题讨论】:

  • 如果这个问题有一个minimal reproducible example,而不是一个可以工作的代码sn-p,并且只是一个你对不工作的代码的解释的文字描述,那么这个问题将会得到改善。 (也就是说,你尝试了一些东西——将 pass 设置为 0——但它并没有像你预期的那样工作。这意味着代码中有一些你不理解的东西。我们为什么要相信你对代码的理解?)跨度>

标签: c++ loops count


【解决方案1】:

您没有显示打印计数的代码,但您需要一个单独的变量来跟踪上次打印 pass 的值。所以你想要这样的东西:

printf("count of first pass: %d\n", pass - lastpass);
lastpass = pass;

【讨论】:

  • 类似int lastPass = pass; int printPass = pass-lastPass;
  • @davylang 您需要在全局范围内定义 lastPass 并将其初始化为 0。然后在 打印差异后修改值。
  • 好的,谢谢,这似乎确实有效。我如何使用该值但是?声明类似 int x = pass - lastpass 的东西不起作用
  • 所有好人都忽略了最后的评论。折腾了一下,终于得到了我需要的答案,谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多