البرمجة

مشكلة حساب تكلفة إصلاح الدرع

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

يقوم البرنامج بتكرار عملية الإصلاح لعدد مرات محدد، وذلك لحساب أفضل تكلفة لكل معركة (CPB) والتي تعتبر الناتج المطلوب. المشكلة التي تواجهها تبدو مرتبطة بقيمة repCost عندما تكون أكبر من أو تساوي 27414.

لفهم المشكلة بشكل أفضل، دعنا نلقي نظرة على الجزء المشتبه فيه من البرنامج:

cpp
if ( minCPB >= costPerBattle ) { minCPB = costPerBattle; optDura = tempMaxDura; }

عندما repCost يساوي أو يزيد عن 27414، قد تكون قيمة tempDura أو totDura تتسبب في قيم “غير صحيحة” تحفظ في optDura. يبدو أن الخطأ في الطريقة التي تقوم بها بحساب tempDura. يجب أن تكون tempDura عبارة عن الدرع الحالي (tempMaxDura) مضروبة في كفاءة الحداد (se)، ولكن يبدو أن هناك خطأ في الحساب عندما repCost يكون كبيرًا.

لحل هذه المشكلة، يجب التأكد من أن الحسابات الرياضية الخاصة بك في الجزء المعني من البرنامج هي صحيحة. راجع الحسابات الرياضية التي تستخدمها في tempDura و totDura عندما repCost يكون كبيرًا وتأكد من صحتها. إذا كانت الحسابات صحيحة، فربما تحتاج إلى إضافة تعليمات تحكم إضافية للتأكد من عدم وصول tempMaxDura إلى قيمة تجعل tempDura تكون أقل من صفر.

أتمنى أن يكون هذا مفيدا لك ويساعدك في حل مشكلتك.

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

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

البرنامج يستخدم مجموعة من المتغيرات لحساب التكلفة الإجمالية للإصلاحات وكلفة كل معركة. وهناك دورة تكرار تُستخدم لحساب الحد الأدنى لتكلفة كل معركة (minCPB) والدرع المثلى للبيع (optDura).

المشكلة الرئيسية تبدو في الحساب الخاص ب tempDura في الدورة التكرارية، حيث يُحسب tempDura باستخدام tempMaxDura * se، وهذا يعني أن الدرع الحالي tempMaxDura يُخفض بنسبة se بعد كل إصلاح. ولكن القيم التي تحفظ في tempDura و totDura قد تكون “غير صحيحة”، مما يتسبب في حفظ قيم غير متوقعة في optDura.

يجب فحص كيفية حساب tempDura بعناية، والتأكد من أنه يتم بشكل صحيح بغض النظر عن قيمة repCost. قد تحتاج إلى تعديل الطريقة التي تحسب بها tempDura و totDura لضمان الحصول على قيم صحيحة ومنطقية في كل تكرار للدورة.

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

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

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

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