Ce code n’imprime rien. J’ai essayé différents compilateurs

la programmation


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

Ce que j’ai essayé :

en fait, je travaillais avec des boucles while mais il y a un problème dans mon code, il n’y a rien à imprimer, je l’ai vérifié avec différentes approches mais aucune solution ne vient

Solution 1

Je pense que le problème est là :

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

mais je ne suis pas sûr de ce que ces lignes de code sont censées faire.

Solution 2

Dès que sock est divisible par mil est incrémenté et immédiatement décrémenté à nouveau – donc la prochaine itération de boucle a la même valeur de sock et la boucle ne se termine jamais.
Puisque la boucle ne se termine jamais, le code n’atteint jamais le cout et vous ne voyez jamais de sortie.

Pour être honnête, 2 minutes avec le débogueur vous auraient montré cela par vous-même : habituez-vous à tester votre code dans le débogueur car c’est votre meilleur ami de développement !

コメント

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