• 1

مشكلة في كود معادلة؛ إرجاع NaN؟

لماذا يظهر في الخرج الكلمة NaN
عند تنفيذ البرنامج التالي:

int a, b, c;
            double delta,solution1,solution2;

            a = 1;
            b = 1;
            c = 1;

            delta = b * b - 4 * a * c;

            solution1 = (-b - Math.Sqrt(delta)) / (2 * a);
            solution2 = (-b + Math.Sqrt(delta)) / (2 * a);

            Console.WriteLine("Solution 1:{0}", solution1);
            Console.WriteLine("Solution 2:{0}", solution2);

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

السبب في ذلك أنّك تحاول إيجاد الجذر التربيعي لقيمة سالبة. وهي قيمة المتغيّر delta الذي سيكون سالبًا في هذه الحالة حسب قيم a و b و c المعطاة. أقترح التعديل التالي للشيفرة البرمجيّة الخاصة بك لتأخذ بعين الاعتبار هذه الحالة:

int a, b, c;
            double delta, solution1, solution2;

            a = 1;
            b = 1;
            c = 1;

            delta = b * b - 4 * a * c;

            if(delta > 0)
            {
                solution1 = (-b - Math.Sqrt(delta)) / (2 * a);
                solution2 = (-b + Math.Sqrt(delta)) / (2 * a);

                Console.WriteLine("Solution 1 = {0}", solution1);
                Console.WriteLine("Solution 2 = {0}", solution2);
            }
            else if (delta == 0)
            {
                solution1 = (-b - Math.Sqrt(delta)) / (2 * a);

                Console.WriteLine("Solution 1 = Solution 2 = {0}", solution1);
            }
            else
            {
                Console.WriteLine("There is no solutions in R set.");
            }

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن