Este código no imprime nada. He probado diferentes compiladores.

programación


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

Lo que he probado:

En realidad, estaba trabajando con bucles while pero hay algún problema en mi código. No se imprime nada. Lo he comprobado con diferentes enfoques, pero no aparece ninguna solución.

Solución 1

Creo que el problema está aquí:

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

pero no estoy seguro de qué se supone que deben hacer esas líneas de código.

Solución 2

Tan pronto como sock es divisible por mse incrementa e inmediatamente se reduce nuevamente, por lo que la siguiente iteración del bucle tiene el mismo valor de sock y el bucle nunca sale.
Como el bucle nunca sale, el código nunca llega al cout y nunca ves ningún resultado.

Para ser honesto, 2 minutos con el depurador te habrían demostrado eso: ¡acostúmbrate a probar tu código en el depurador, ya que es el mejor amigo de desarrollo que tienes!

コメント

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