【解決方法】別のコンパイラを試してみましたが、このコードでは何も出力されません


#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;

    int sock = n;
    int count = 0;

   while (sock > 0) {
        count+=1;

        if (sock % m == 0) {
            sock++;
        }
            sock--;
    }

    cout << count << endl;

    return 0;
}

私が試したこと:

実際、私はwhileループで作業していましたが、コードにいくつかの問題があります。何も出力されません。さまざまなアプローチでチェックしましたが、解決策はありません

解決策 1

問題はここにあると思います:

C++
if (sock % m == 0) {
    sock++;
}
    sock--; // If you add 1 to sock and then subtract 1 it will go on for ever

しかし、これらのコード行が何をするのかはわかりません。

解決策 2

出来るだけ早く sock で割り切れます m、インクリメントされ、すぐに再びデクリメントされるため、次のループ反復では同じ値になります。 sock そしてループは決して終了しません。
ループは決して終了しないため、コードは決して到達しません。 cout そして出力はまったく表示されません。

正直に言うと、デバッガーを 2 分間使用すれば、それがわかるでしょう。デバッガーは開発の最良の友人であるため、デバッガーでコードをテストすることに慣れてください。

コメント

タイトルとURLをコピーしました