From d13c0ba3ea29e97052f993d386aaf06fa98ffaee Mon Sep 17 00:00:00 2001 From: Azat Date: Thu, 20 May 2021 10:44:06 +0300 Subject: [PATCH] task 1 complete --- .../Numbers/FloatNumbers.cs | 19 +++++-------- .../01-primitive-types/Numbers/Integers.cs | 27 +++++++------------ 2 files changed, 15 insertions(+), 31 deletions(-) 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..dc22a64a 100644 --- a/course-2021-1/exercises/01-primitive-types/Numbers/FloatNumbers.cs +++ b/course-2021-1/exercises/01-primitive-types/Numbers/FloatNumbers.cs @@ -13,11 +13,8 @@ public static class FloatNumbers /// internal static double GetNaN() { - /* - Необходимо вернуть значение, не используя непосредственно саму константу. - Для этого подумай, какой смысл в себе несет эта константа и где бы она могла стать результатом операции или вычисления функции. - */ - throw new NotImplementedException(); + double zero = 0; + return zero / 0; } /// @@ -27,21 +24,17 @@ internal static double GetNaN() /// True, если число имеет значение "не число", иначе false. internal static bool IsNaN(double d) { - // Подсказка: по аналогии с константами типа int, у типа double тоже есть свой набор констант. - throw new NotImplementedException(); + return double.IsNaN(d); } /// /// Возвращает результат сравнения двух вещественнозначных чисел. /// /// -1 - первое меньше второго, 0 - значения равны, 1 - первое больше второго. - internal static int Compare(/* дополни сигнатуру метода как считаешь правильным */) + internal static int Compare(double x, double y) { - /* - Подумай, почему это задание дано в части про вещественнозначные числа. И почему не дана полная сигнатура метода. - Если сходу идей нет, перестань искать подвох и просто реализуй дословно. Теперь еще раз посмотри на код и подумай в чем может быть проблема, сколько должно быть аргументов. - */ - throw new NotImplementedException(); + + return Math.Sign(y - x); } // и все?!! О_о 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..d81af14e 100644 --- a/course-2021-1/exercises/01-primitive-types/Numbers/Integers.cs +++ b/course-2021-1/exercises/01-primitive-types/Numbers/Integers.cs @@ -41,12 +41,8 @@ public static class Integers /// internal static int HalfIntMaxValue() { - /* - После C++ вы будете приятно удивлены какое умное в .Net автодополнение (IntelliSense). - Особенно это касается связки Visual Studio + Resharper, используя которую, если просто набрать return и нажать пробел, - то в появившемся списке автодополнения одной из первых будет нужная тебе константа :) - */ - throw new NotImplementedException(); + uint x = 0; + return (int)((x - 1) / 4); } /// @@ -54,8 +50,7 @@ internal static int HalfIntMaxValue() /// internal static int Cube(int x) { - // не сомневайся, пиши. Тут без подвохов. - throw new NotImplementedException(); + return x * x * x; } /// @@ -63,11 +58,7 @@ internal static int Cube(int x) /// internal static int CubeWithOverflowCheck(int x) { - /* - Если спал на лекции, то тут придется погуглить, сорри. - И заодно подумай какой режим выставлен по умолчанию. Почему. И почему категорически нельзя надеяться на режим по умолчанию. - */ - throw new NotImplementedException(); + return checked((int) (x * x * x)); } /// @@ -76,7 +67,7 @@ И заодно подумай какой режим выставлен по у internal static int CubeWithoutOverflowCheck(int x) { // если сделал предыдущие, то с этим уже должно быть понятно. - throw new NotImplementedException(); + return unchecked((int) (x * x * x)); } /// @@ -93,7 +84,7 @@ internal static string ToString(int x) Подсказка: нужно воспользоваться методом, который есть у абсолютно всех объектов. */ - throw new NotImplementedException(); + return x.ToString(); } /// @@ -107,7 +98,7 @@ internal static int Parse(string s) Продолжай идти простым путем -нужен метод, обратный методу ToString выше, который распарсит дефолтное строковое представление числа. Подсказка: у каждого примитивного типа есть набор статических методов, среди которых есть нужный. */ - throw new NotImplementedException(); + return int.Parse(s); } /// @@ -119,7 +110,7 @@ internal static int TenTimes(int x) Реализуй умножение числа на 10 без использования арифметических операций над числами. Воспользуйся реализованными выше методами ToString и Parse. И не думай ни о каких переполнениях - задача не на это :) */ - throw new NotImplementedException(); + return Parse(ToString(x) + '0'); } /// @@ -133,7 +124,7 @@ internal static string ToHexString(int x) У метода ToString числовых типов есть перегрузка, которая принимает строку с одним из заданного набора форматов. В студии дается хорошая и понятная подсказка с этим набором форматов, в других же IDE скорее всего такого не будет, и придется погуглить форматы. */ - throw new NotImplementedException(); + return x.ToString("X"); } /*