ループ - C++ 関数が呼び出されたときにカウンターを 0 にリセットするにはどうすればよいですか?

okwaves2024-01-25  8

カウンターを 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 変数は、別の関数で必要とされるため、スコープ内でグローバルに宣言されます。これはこれと同様の方法で呼び出されます (追記: グローバルである必要があります)

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

「pass」を返した後、pass を 0 に設定してみました。以下のような if ステートメントでただし、各反復でどれだけ増加するかではなく、パスの総数が表示されます。

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

何か助けていただければ幸いです:) ありがとう

この質問は、機能するコードの断片ではなく、最小限の再現可能な例があり、機能しないコードの解釈をテキストで説明するだけであれば、改善されるでしょう。 (つまり、パスを 0 に設定して何かを試みましたが、期待どおりに動作しませんでした。つまり、コードに理解できない何かがあるということです。なぜ、あなたの und を信頼する必要があるのでしょうか。コードはわかりますか?)

– ジャミット

2020 年 9 月 5 日 2:22



------------------------

カウントを出力するコードは示されていませんが、必要なのは、最後に出力された pass の値を追跡する別の変数です。したがって、次のようなものが必要です。

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

4

このようなもの int lastPass = pass; int printPass = パス-lastPass;

– ダヴィラン

2020 年 9 月 5 日、1:16

@davylang lastPass をグローバルに定義して 0 に初期化すると、差分を出力した後で値を変更できます。

– dブッシュ

2020 年 9 月 5 日 1:18

わかりました、ありがとうございます。うまくいくようです。その値をどのように使用すればよいでしょうか? int x = pass - lastpass のような宣言は機能しません

– ダヴィラン

2020 年 9 月 5 日 1:28

良い人なら、最後のコメントは無視してください。いろいろ考えて、やっと必要な答えを見つけました、ありがとう!!

– ダヴィラン

2020 年 9 月 5 日 2:00

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。