From c9e2dcadb775fed4c2019b16ec790362d2ad24be Mon Sep 17 00:00:00 2001 From: h4ckit Date: Thu, 20 May 2021 07:36:05 +0300 Subject: [PATCH 1/3] task_1 Fygin Konstantin 878 --- .../Numbers.Tests/Numbers.Tests.csproj | 2 +- .../Numbers/FloatNumbers.cs | 15 ++++++++---- .../01-primitive-types/Numbers/Integers.cs | 24 ++++++++++++------- .../01-primitive-types/Numbers/Numbers.csproj | 2 +- .../01-primitive-types/Numbers/Program.cs | 2 +- 5 files changed, 30 insertions(+), 15 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..aef89556 100644 --- a/course-2021-1/exercises/01-primitive-types/Numbers/FloatNumbers.cs +++ b/course-2021-1/exercises/01-primitive-types/Numbers/FloatNumbers.cs @@ -17,7 +17,8 @@ internal static double GetNaN() Необходимо вернуть значение, не используя непосредственно саму константу. Для этого подумай, какой смысл в себе несет эта константа и где бы она могла стать результатом операции или вычисления функции. */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + return 0.0 / 0.0; } /// @@ -28,20 +29,26 @@ internal static double GetNaN() internal static bool IsNaN(double d) { // Подсказка: по аналогии с константами типа int, у типа double тоже есть свой набор констант. - throw new NotImplementedException(); + //throw new NotImplementedException(); + return double.IsNaN(d); } /// /// Возвращает результат сравнения двух вещественнозначных чисел. /// /// -1 - первое меньше второго, 0 - значения равны, 1 - первое больше второго. - internal static int Compare(/* дополни сигнатуру метода как считаешь правильным */) + internal static int Compare(double a, double b) { /* Подумай, почему это задание дано в части про вещественнозначные числа. И почему не дана полная сигнатура метода. Если сходу идей нет, перестань искать подвох и просто реализуй дословно. Теперь еще раз посмотри на код и подумай в чем может быть проблема, сколько должно быть аргументов. */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + if (Math.Abs(a - b) < double.MinValue) + return 0; + if (a > b) + return 1; + return -1; } // и все?!! О_о 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..760a248d 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,8 @@ internal static int HalfIntMaxValue() Особенно это касается связки Visual Studio + Resharper, используя которую, если просто набрать return и нажать пробел, то в появившемся списке автодополнения одной из первых будет нужная тебе константа :) */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + return int.MaxValue / 2; } /// @@ -55,7 +56,8 @@ internal static int HalfIntMaxValue() internal static int Cube(int x) { // не сомневайся, пиши. Тут без подвохов. - throw new NotImplementedException(); + //throw new NotImplementedException(); + return x * x * x; } /// @@ -67,7 +69,8 @@ internal static int CubeWithOverflowCheck(int x) Если спал на лекции, то тут придется погуглить, сорри. И заодно подумай какой режим выставлен по умолчанию. Почему. И почему категорически нельзя надеяться на режим по умолчанию. */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + return checked(x * x * x); } /// @@ -76,7 +79,8 @@ И заодно подумай какой режим выставлен по у internal static int CubeWithoutOverflowCheck(int x) { // если сделал предыдущие, то с этим уже должно быть понятно. - throw new NotImplementedException(); + // throw new NotImplementedException(); + return unchecked(x * x * x); } /// @@ -93,7 +97,8 @@ internal static string ToString(int x) Подсказка: нужно воспользоваться методом, который есть у абсолютно всех объектов. */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + return x.ToString(); } /// @@ -107,7 +112,8 @@ internal static int Parse(string s) Продолжай идти простым путем -нужен метод, обратный методу ToString выше, который распарсит дефолтное строковое представление числа. Подсказка: у каждого примитивного типа есть набор статических методов, среди которых есть нужный. */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + return int.Parse(s); } /// @@ -119,7 +125,8 @@ internal static int TenTimes(int x) Реализуй умножение числа на 10 без использования арифметических операций над числами. Воспользуйся реализованными выше методами ToString и Parse. И не думай ни о каких переполнениях - задача не на это :) */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + return int.Parse(x.ToString() + "0"); } /// @@ -133,7 +140,8 @@ internal static string ToHexString(int x) У метода ToString числовых типов есть перегрузка, которая принимает строку с одним из заданного набора форматов. В студии дается хорошая и понятная подсказка с этим набором форматов, в других же IDE скорее всего такого не будет, и придется погуглить форматы. */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + return x.ToString(format:"X"); } /* 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 diff --git a/course-2021-1/exercises/01-primitive-types/Numbers/Program.cs b/course-2021-1/exercises/01-primitive-types/Numbers/Program.cs index 78460c01..d0f381d2 100644 --- a/course-2021-1/exercises/01-primitive-types/Numbers/Program.cs +++ b/course-2021-1/exercises/01-primitive-types/Numbers/Program.cs @@ -17,7 +17,7 @@ internal class Program private static void Main() { // твои бро: Console.WriteLine и Console.ReadLine - + Integers.Cube(-10); Console.WriteLine("Hello World!"); } } From 2cdaad998b6d7f09c3962e50845a374f113f3b5a Mon Sep 17 00:00:00 2001 From: h4ckit Date: Thu, 20 May 2021 07:40:16 +0300 Subject: [PATCH 2/3] fix float compare --- .../exercises/01-primitive-types/Numbers/FloatNumbers.cs | 4 ++-- course-2021-1/exercises/01-primitive-types/Numbers/Program.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 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 aef89556..106b4745 100644 --- a/course-2021-1/exercises/01-primitive-types/Numbers/FloatNumbers.cs +++ b/course-2021-1/exercises/01-primitive-types/Numbers/FloatNumbers.cs @@ -37,14 +37,14 @@ internal static bool IsNaN(double d) /// Возвращает результат сравнения двух вещественнозначных чисел. /// /// -1 - первое меньше второго, 0 - значения равны, 1 - первое больше второго. - internal static int Compare(double a, double b) + internal static int Compare(double a, double b, double eps) { /* Подумай, почему это задание дано в части про вещественнозначные числа. И почему не дана полная сигнатура метода. Если сходу идей нет, перестань искать подвох и просто реализуй дословно. Теперь еще раз посмотри на код и подумай в чем может быть проблема, сколько должно быть аргументов. */ //throw new NotImplementedException(); - if (Math.Abs(a - b) < double.MinValue) + if (Math.Abs(a - b) < eps) return 0; if (a > b) return 1; diff --git a/course-2021-1/exercises/01-primitive-types/Numbers/Program.cs b/course-2021-1/exercises/01-primitive-types/Numbers/Program.cs index d0f381d2..dc75f8a3 100644 --- a/course-2021-1/exercises/01-primitive-types/Numbers/Program.cs +++ b/course-2021-1/exercises/01-primitive-types/Numbers/Program.cs @@ -17,8 +17,8 @@ internal class Program private static void Main() { // твои бро: Console.WriteLine и Console.ReadLine - Integers.Cube(-10); - Console.WriteLine("Hello World!"); + if (FloatNumbers.Compare(0.1, 0.1, 0.0000001) == 0) + Console.WriteLine("Hello World!"); } } } From 3bd23361ba0a2d17d968747b6edd7616c1d7895b Mon Sep 17 00:00:00 2001 From: h4ckit Date: Thu, 20 May 2021 12:47:49 +0300 Subject: [PATCH 3/3] task_2 Fygin Konstantin 878 --- .../AdventureTime/AdventureTime.csproj | 2 +- .../AdventureTime/AdventureTime/Program.cs | 12 ++++++- .../AdventureTime/AdventureTime/Time.cs | 33 ++++++++++++------- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/AdventureTime.csproj b/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/AdventureTime.csproj index dba2bee8..054b0d0e 100644 --- a/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/AdventureTime.csproj +++ b/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/AdventureTime.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.0 + net5.0 diff --git a/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Program.cs b/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Program.cs index af4efcae..ebc892da 100644 --- a/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Program.cs +++ b/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Program.cs @@ -1,9 +1,19 @@ -namespace AdventureTime +using System; + +namespace AdventureTime { internal class Program { private static void Main() { + var t = Time.WhatTimeIsIt(); + Console.WriteLine(t); + var t2 = Time.WhatTimeIsItInUtc(); + Console.WriteLine(t2); + Console.WriteLine(t2.Kind); + var t3 = Time.SpecifyKind(t, DateTimeKind.Unspecified); + Console.WriteLine(t3.Kind); + } } } diff --git a/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Time.cs b/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Time.cs index 45de70d1..7e807b3a 100644 --- a/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Time.cs +++ b/course-2021-1/exercises/02-adventure-time/AdventureTime/AdventureTime/Time.cs @@ -14,7 +14,8 @@ internal static class Time /// public static DateTime WhatTimeIsIt() { - throw new NotImplementedException(); + //throw new NotImplementedException(); + return DateTime.Now; } /// @@ -22,7 +23,8 @@ public static DateTime WhatTimeIsIt() /// public static DateTime WhatTimeIsItInUtc() { - throw new NotImplementedException(); + //throw new NotImplementedException(); + return DateTime.UtcNow; } /// @@ -36,7 +38,8 @@ public static DateTime SpecifyKind(DateTime dt, DateTimeKind kind) /* Подсказка: поищи в статических методах DateTime. */ - throw new NotImplementedException(); + // throw new NotImplementedException(); + return DateTime.SpecifyKind(dt, kind); } /// @@ -51,7 +54,8 @@ Обязательно поиграйся и посмотри на измене Ну и на будущее запомни этот прекрасный строковый формат представления времени - он твой бро! Название запоминать не нужно, просто помни, что для передачи значения в виде строки, выбирать лучше инвариантные относительно сериализации/десериализации форматы. */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + return dt.ToString("O"); } /// @@ -65,7 +69,8 @@ public static DateTime ParseFromRoundTripFormat(string dtStr) Поиграйся и проверь, что round-trip действительно round-trip, т.е. туда-обратно равно оригиналу (для туда воспользуйся предыдущим методом). Проверь для всех значений DateTime.Kind. */ - throw new NotImplementedException(); + // throw new NotImplementedException(); + return DateTime.Parse(dtStr); } /// @@ -77,7 +82,8 @@ public static DateTime ToUtc(DateTime dt) Eсли воспользуешься нужным методом, то напоминаю, что результат его работы зависит от dt.Kind. В случае dt.Kind == Unspecified предполагается, что время локальное, т.е. результат работы в случае Local и Unspecified совпадают. Такие дела */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + return SpecifyKind(dt, DateTimeKind.Utc); } /// @@ -88,7 +94,8 @@ public static DateTime ToUtc(DateTime dt) public static DateTime AddTenSeconds(DateTime dt) { // здесь воспользуйся методами самого объекта и заодно посмотри какие еще похожие есть - throw new NotImplementedException(); + // throw new NotImplementedException(); + return dt.AddSeconds(10); } /// @@ -102,7 +109,8 @@ public static DateTime AddTenSecondsV2(DateTime dt) Ну а здесь воспользуйся сложением с TimeSpan. Обрати внимание, что помимо конструктора, у класса есть набор полезных статических методов-фабрик. Обрати внимание, что у TimeSpan нет статических методов FromMonth, FromYear. Как думаешь, почему? */ - throw new NotImplementedException(); + //throw new NotImplementedException(); + return dt + new TimeSpan(0, 0, 10); } /// @@ -118,7 +126,8 @@ public static int GetHoursBetween(DateTime dt1, DateTime dt2) 2) Проверь, учитывается ли Kind объектов при арифметических операциях. 3) Подумай, почему возвращаемое значение может отличаться от действительности. */ - throw new NotImplementedException(); + // throw new NotImplementedException(); + return (int)(dt2 - dt1).TotalHours; } /// @@ -127,7 +136,8 @@ public static int GetHoursBetween(DateTime dt1, DateTime dt2) public static int GetTotalMinutesInThreeMonths() { // ну тут все просто и очевидно, если сделал остальные и подумал над вопросами в комментах. - throw new NotImplementedException(); + // throw new NotImplementedException(); + return (int) (new TimeSpan(92, 0, 0, 0, 0)).TotalMinutes; } #region Adventure time saga @@ -277,7 +287,8 @@ private static ZonedDateTime GetZonedTime(LocalDateTime localTime, string timeZo /// True - если родились в один день, иначе - false. internal static bool AreEqualBirthdays(DateTime person1Birthday, DateTime person2Birthday) { - throw new NotImplementedException(); + //throw new NotImplementedException(); + return person1Birthday.DayOfYear == person2Birthday.DayOfYear; } } }