From d80bcf247b69f6548fe95904d8a0525f7855bc68 Mon Sep 17 00:00:00 2001 From: TopCoder2K Date: Thu, 20 May 2021 00:39:31 +0300 Subject: [PATCH] All tests were passed! --- .../Numbers.Tests/Numbers.Tests.csproj | 2 +- .../Numbers/FloatNumbers.cs | 29 +++++++++++++++---- .../01-primitive-types/Numbers/Integers.cs | 16 +++++----- .../01-primitive-types/Numbers/Numbers.csproj | 2 +- 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/course-2021-1/exercises/01-primitive-types/Numbers.Tests/Numbers.Tests.csproj b/course-2021-1/exercises/01-primitive-types/Numbers.Tests/Numbers.Tests.csproj index 8a03330f..88fd3661 100644 --- a/course-2021-1/exercises/01-primitive-types/Numbers.Tests/Numbers.Tests.csproj +++ b/course-2021-1/exercises/01-primitive-types/Numbers.Tests/Numbers.Tests.csproj @@ -1,7 +1,7 @@ - netcoreapp2.0 + net5.0 false diff --git a/course-2021-1/exercises/01-primitive-types/Numbers/FloatNumbers.cs b/course-2021-1/exercises/01-primitive-types/Numbers/FloatNumbers.cs index 9cb1d053..82d5a251 100644 --- a/course-2021-1/exercises/01-primitive-types/Numbers/FloatNumbers.cs +++ b/course-2021-1/exercises/01-primitive-types/Numbers/FloatNumbers.cs @@ -15,9 +15,10 @@ internal static double GetNaN() { /* Необходимо вернуть значение, не используя непосредственно саму константу. - Для этого подумай, какой смысл в себе несет эта константа и где бы она могла стать результатом операции или вычисления функции. + Для этого подумай, какой смысл в себе несет эта константа и где бы она могла стать результатом операции + или вычисления функции. */ - throw new NotImplementedException(); + return 0.0 / 0.0; // NaN возвращается, когда значение не определено, деление 0 на 0 подходит. } /// @@ -28,20 +29,36 @@ internal static double GetNaN() internal static bool IsNaN(double d) { // Подсказка: по аналогии с константами типа int, у типа double тоже есть свой набор констант. - throw new NotImplementedException(); + return double.IsNaN(d); // Зачем пользоваться константами, если есть хороший метод?) } /// /// Возвращает результат сравнения двух вещественнозначных чисел. /// + /// Первое вещественное число. + /// Второе вещественное число. + /// Точность, с которой сравниваются числа. Если различие первого от второго числа + /// не превосходит epsilon по модулю, то числа считаются равными. /// -1 - первое меньше второго, 0 - значения равны, 1 - первое больше второго. - internal static int Compare(/* дополни сигнатуру метода как считаешь правильным */) + internal static int Compare(double first, double second, double epsilon = 1e-15) { /* Подумай, почему это задание дано в части про вещественнозначные числа. И почему не дана полная сигнатура метода. - Если сходу идей нет, перестань искать подвох и просто реализуй дословно. Теперь еще раз посмотри на код и подумай в чем может быть проблема, сколько должно быть аргументов. + Если сходу идей нет, перестань искать подвох и просто реализуй дословно. + Теперь еще раз посмотри на код и подумай в чем может быть проблема, сколько должно быть аргументов. */ - throw new NotImplementedException(); + if (first - second < epsilon) + { + return -1; + } + else if (first - second > epsilon) + { + return 1; + } + else + { + return 0; + } } // и все?!! О_о diff --git a/course-2021-1/exercises/01-primitive-types/Numbers/Integers.cs b/course-2021-1/exercises/01-primitive-types/Numbers/Integers.cs index b1d90398..519a8fdf 100644 --- a/course-2021-1/exercises/01-primitive-types/Numbers/Integers.cs +++ b/course-2021-1/exercises/01-primitive-types/Numbers/Integers.cs @@ -46,7 +46,7 @@ internal static int HalfIntMaxValue() Особенно это касается связки Visual Studio + Resharper, используя которую, если просто набрать return и нажать пробел, то в появившемся списке автодополнения одной из первых будет нужная тебе константа :) */ - throw new NotImplementedException(); + return Int32.MaxValue / 2; // Хммм, в Rider не было нужной константы в подсказках. } /// @@ -55,7 +55,7 @@ internal static int HalfIntMaxValue() internal static int Cube(int x) { // не сомневайся, пиши. Тут без подвохов. - throw new NotImplementedException(); + return x * x * x; } /// @@ -67,7 +67,7 @@ internal static int CubeWithOverflowCheck(int x) Если спал на лекции, то тут придется погуглить, сорри. И заодно подумай какой режим выставлен по умолчанию. Почему. И почему категорически нельзя надеяться на режим по умолчанию. */ - throw new NotImplementedException(); + return checked(x * x * x); } /// @@ -76,7 +76,7 @@ И заодно подумай какой режим выставлен по у internal static int CubeWithoutOverflowCheck(int x) { // если сделал предыдущие, то с этим уже должно быть понятно. - throw new NotImplementedException(); + return unchecked(x * x * x); } /// @@ -93,7 +93,7 @@ internal static string ToString(int x) Подсказка: нужно воспользоваться методом, который есть у абсолютно всех объектов. */ - throw new NotImplementedException(); + return x.ToString(); } /// @@ -107,7 +107,7 @@ internal static int Parse(string s) Продолжай идти простым путем -нужен метод, обратный методу ToString выше, который распарсит дефолтное строковое представление числа. Подсказка: у каждого примитивного типа есть набор статических методов, среди которых есть нужный. */ - throw new NotImplementedException(); + return int.Parse(s); } /// @@ -119,7 +119,7 @@ internal static int TenTimes(int x) Реализуй умножение числа на 10 без использования арифметических операций над числами. Воспользуйся реализованными выше методами ToString и Parse. И не думай ни о каких переполнениях - задача не на это :) */ - throw new NotImplementedException(); + return Integers.Parse(Integers.ToString(x) + '0'); } /// @@ -133,7 +133,7 @@ internal static string ToHexString(int x) У метода ToString числовых типов есть перегрузка, которая принимает строку с одним из заданного набора форматов. В студии дается хорошая и понятная подсказка с этим набором форматов, в других же IDE скорее всего такого не будет, и придется погуглить форматы. */ - throw new NotImplementedException(); + return x.ToString("X"); // А вот Rider тоже подсказывает.) } /* diff --git a/course-2021-1/exercises/01-primitive-types/Numbers/Numbers.csproj b/course-2021-1/exercises/01-primitive-types/Numbers/Numbers.csproj index ce1697ae..20827042 100644 --- a/course-2021-1/exercises/01-primitive-types/Numbers/Numbers.csproj +++ b/course-2021-1/exercises/01-primitive-types/Numbers/Numbers.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.0 + net5.0