Kode ini tidak mencetak apa pun. Saya telah mencoba kompiler yang berbeda

pemrograman


#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;
}

Apa yang saya coba:

sebenarnya saya sedang mengerjakan while loop tetapi ada beberapa masalah dalam kode saya tidak ada pencetakan apa pun. Saya telah memeriksanya dengan pendekatan yang berbeda tetapi tidak ada solusi yang datang

Solusi 1

Saya pikir masalahnya ada di sini:

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

tapi saya tidak yakin apa yang seharusnya dilakukan baris kode tersebut.

Solusi 2

Sesegera sock habis dibagi mitu bertambah dan segera dikurangi lagi – sehingga iterasi loop berikutnya memiliki nilai yang sama sock dan loopnya tidak pernah keluar.
Karena perulangan tidak pernah keluar, kode tidak pernah mencapai cout dan Anda tidak pernah melihat keluaran apa pun.

Sejujurnya, 2 menit dengan debugger akan menunjukkan hal itu kepada Anda sendiri: biasakan menguji kode Anda di debugger karena ini adalah teman pengembangan terbaik yang Anda miliki!

コメント

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