public void Newton_NormalInput_CorrectAnswer() { //Arrange var expectedAnswer = 3d; //Act var target = SquareRoot.Newton(number: 9, rootDegree: 2); //Assert Assert.AreEqual(expectedAnswer, target); }
public void Newton_ZeroNumber_ZeroAnswer() { //Arrange var expectedAnswer = 0d; //Act var target = SquareRoot.Newton(number: 0, rootDegree: 2); //Assert Assert.AreEqual(expectedAnswer, target); }
public void Newton_NegativeRootDegree_NanAnswer() { //Arrange var expectedAnswer = double.NaN; //Act var target = SquareRoot.Newton(number: 3, rootDegree: -1); //Assert Assert.AreEqual(expectedAnswer, target); }
static void Main(string[] args) { //Подкоренное выражение double number = 0; //Степень корня int rootDegree = 0; //Точность double epsilon = SquareRoot.STANDART_EPSILON_VALUE; //Пользователь вводит подкоренное выражение UserInputVerifiable("Пожалуйста, введите подкоренное выражение:", (string numberStr) => { if (!double.TryParse(numberStr, out number)) { ErrorWriteLine("Не удалось распознать число."); return(false); } if (number < 0) { ErrorWriteLine("Подкоренное выражение не может быть отрицательным числом."); return(false); } return(true); }); //Пользователь вводит степень корня UserInputVerifiable("Пожалуйста, введите степень корня:", (string numberStr) => { if (!int.TryParse(numberStr, out rootDegree)) { ErrorWriteLine("Не удалось распознать число. Показатель корня (степень) должен быть натуральным числом."); return(false); } if (rootDegree <= 0) { ErrorWriteLine("Неверный показатель (степень) корня. Степень должна быть одним из натуральных чисел, исключая ноль."); return(false); } return(true); }); //Пользователь вводит точность UserInputVerifiable("Пожалуйста, введите требуемую точность или оставьте поле пустым:", (string numberStr) => { if (string.IsNullOrWhiteSpace(numberStr)) { return(true); } if (!double.TryParse(numberStr, out epsilon)) { Console.WriteLine("Не удалось распознать число."); return(false); } return(true); }); //Вычисленный корень n-ой степени методом Ньютона var newtonAnswer = SquareRoot.Newton(number, rootDegree, epsilon); //Вычисленный корень n-ой степени с помощью Math.Pow var mathPowAnswer = Math.Pow(number, 1.0 / rootDegree); //Вывод получившихся значений Console.WriteLine("Число = {0}\nСтепень корня = {1}\nТочность = {2}\nКорень числа:", number, rootDegree, epsilon); Console.WriteLine("{0,-20}\t{1,-20}\t{2,-20}", "Методом Ньютона", "Методом Math.Pow", "Разница"); Console.WriteLine("{0,-20}\t{1,-20}\t{2,-20}", newtonAnswer, mathPowAnswer, newtonAnswer - mathPowAnswer); }