هذا الرمز لا يطبع أي شيء لقد جربت مترجمين مختلفين


#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

أعتقد أن المشكلة هنا:

سي ++
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 ولن ترى أي مخرجات أبدًا.

لكي نكون صادقين، دقيقتين مع مصحح الأخطاء كانت ستوضح لك ذلك بنفسك: اعتد على اختبار التعليمات البرمجية الخاصة بك في مصحح الأخطاء لأنه أفضل صديق تطوير لديك!

コメント

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