البرمجة

حل مشكلة C++: خطأ C2679 وكيفية تصحيحه

الخطأ الذي تواجهه في الشفرة يعود إلى سطر:

cpp
x = div(output, 10);

في هذا السطر، تحاول استخدام دالة div() التي تأخذ اثنين من العناصر كمعاملين، وتقوم بتقسيمهما للحصول على الناتج والباقي، ولكنك تحاول تعيين الناتج (الذي هو من نوع div_t) إلى x، الذي هو متغير من نوع int، مما يؤدي إلى حدوث الخطأ الذي تواجهه.

لفهم الخطأ بشكل أفضل، يجب أن تعرف أن div() تعيد نوع div_t الذي يحتوي على نتيجة القسمة والباقي. بينما متغير x هو من نوع int، وهذا يعني أنهما من أنواع مختلفة.

لحل هذا الخطأ، يمكنك استخدام العمليات الحسابية المعتادة للقسمة على الأعداد الصحيحة، وبالتالي يمكنك تغيير السطر المشكوك فيه إلى:

cpp
x /= 10;

بهذه الطريقة، سيتم قسم قيمة x على 10 وتخزين النتيجة في x بشكل صحيح، مما يتجنب الخطأ الذي تواجهه.

أيضًا، هناك خطأ آخر يجب تصحيحه في الكود، وهو في السطر:

cpp
kol += kol;

هنا تقوم بإضافة قيمة kol إلى نفسها، مما لا يقوم بعدد مرات الحلقة الصحيح، بل يضيف صفر إلى kol في كل تكرار. يجب استبداله ب:

cpp
kol++;

بهذه الطريقة، سيتم زيادة قيمة kol بواحد في كل تكرار، مما يعكس عدد المرات التي تم فيها تكرار الحلقة بشكل صحيح.

بعد تصحيح الخطأين، يجب أن يبدو الكود كالتالي:

cpp
#include "stdafx.h" #include #include using namespace std; int main() { int kol = 0, x; cout << "Insert a number: "; cin >> x; while (x > 0) { x /= 10; kol++; } cout << "Amount: " << kol << endl; system("pause"); return 0; }

بعد إجراء هذه التغييرات، يجب أن يعمل الكود بشكل صحيح ويقوم بعرض عدد الأرقام في الرقم الذي قمت بإدخاله.

المزيد من المعلومات

بالتأكيد، سأواصل كتابة المقال:


في عالم البرمجة، يمكن أن تواجه العديد من الأخطاء والتحديات أثناء تطوير البرامج، ومن بين هذه الأخطاء تلك التي قد تبدو محيرة في البداية. واحدة من هذه الأخطاء هي “خطأ C2679” في لغة البرمجة C++.

عندما تواجه هذا الخطأ، فإن الرسالة التي تظهر غالبًا تشير إلى عدم وجود مشغل (operator) يأخذ عامل من النوع المحدد، أو عدم وجود تحويل مقبول. يعني هذا أن المترجم لم يتمكن من فهم العملية التي تحاول تنفيذها.

في الشفرة المعروضة، كان هناك خطأ في استخدام الدالة div() التي تستخدم للقسمة على الأعداد الصحيحة. تم استخدامها بشكل غير صحيح، حيث حاول المستخدم تعيين قيمة div_t إلى متغير من نوع int، مما أدى إلى حدوث الخطأ. لحل هذا الخطأ، تم استبدال استدعاء div() بالعملية الحسابية المناسبة للقسمة.

بالإضافة إلى ذلك، كان هناك خطأ آخر في الحلقة التي تحسب عدد الأرقام في الرقم المُدخل. حيث كانت العملية kol += kol تقوم بإضافة قيمة kol إلى نفسها، بدلاً من زيادة العداد بواحد في كل تكرار. تم تصحيح هذا الخطأ بتغيير العملية إلى kol++ لزيادة العداد بشكل صحيح.

بعد تصحيح الأخطاء، تمكن المستخدم من تشغيل البرنامج بنجاح والحصول على النتيجة الصحيحة لعدد الأرقام في الرقم المدخل.

باختصار، يُظهر هذا المثال أهمية فهم مفهوم العمليات وأنواع البيانات المستخدمة في البرمجة، بالإضافة إلى أهمية التحقق من صحة الشفرة وتصحيح الأخطاء عند الضرورة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر