Программа выводит значения в виде Nan при некоторых условиях в уравнении - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите разобраться. Написал программу для решения уравнений вида x^n=a. Почему при вводе A отрицательного числа, а степени N положительного, нечетного, ответ выходит в виде Nan
using System;
 
class Uravnenie
{
    static void Main()
    {
        double a,n,k,x;
        Console.WriteLine("Введите A и N в уравнение вида x^n=a");
        Console.WriteLine("Введите A");
        a = double.Parse(Console.ReadLine());
        Console.WriteLine("Введите N");
        n = double.Parse(Console.ReadLine());
        k = 1 / n;
        x = Math.Pow(a,k);
 
        if ((n % 2 == 0) & (a >= 0) | (n % 2 != 0) & (a>=0 | a<0))
        {
            Console.WriteLine("Ответ: Х равен " + x);
            Console.ReadLine();
        }
        else 
            Console.WriteLine("Нет корней!!");

    }
 
}

Решение задачи: «Программа выводит значения в виде Nan при некоторых условиях в уравнении»

textual
Листинг программы
using System;
 
 
namespace Power
{
    static class MyMath
    {
        public static double Power(double x, double n)
        {
            if (Math.Abs(n - 0) < double.Epsilon)
                return 1;
            if (Math.Abs(n - 1) < double.Epsilon)
                return x;
            if (Math.Abs(x - 0) < double.Epsilon)
                return 0;
            if (Math.Abs(x - 1) < double.Epsilon)
                return 1;
            if (x > 0)
                return Math.Pow(x, n);
            return Math.Round(-Math.Exp(n * Math.Log(-x, Math.E)), 15);
        }
    }
    internal class Program
    {
        private static void Main()
        {
            for (double i = -2; i < 3; i += 0.5)
                for (double j = -2; j < 2; j += 0.5)
                    Console.WriteLine("{0}^{1} = {2}", i.ToString(), j.ToString(), MyMath.Power(i, j).ToString());
            Console.WriteLine(MyMath.Power(-8, 1.0 / 3));
            Console.ReadKey();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы