Софтуерно Инженерство
Loading...
YanaStamenova avatar YanaStamenova 16 Точки

Задача от методси - Array Manipulator C#

Здравейте, 

на задача Array Manipulator получавам 40/100. Zero Тестовете са ок, гледах условията няколко пъти, но не мога да открия къде имам грешка. Може ли малко помощ: 

https://pastebin.com/s8DKsACh

 

Благодаря

0
C# Fundamentals
RadostinStoychev avatar RadostinStoychev 112 Точки
Best Answer

Ето едно решение с методи за всяка операция.
https://pastebin.com/LUUtMhVd
Някъде в коментарите видях, че е станало на въпрос за Concat. То е същото като стрингосването :D.
Например:

string str = "simple";
str = str + " text";

Тоест Concat e абсолютно същото като + или +=. Ако искаш да закопаеш още повече, почети за Command Interpreter, Interpreter Pattern, Interpreter Desing Pattern и т.н. По-късно в OOP-то този подход започва да се използва за разделяне на командите на отделни части. Ако имаш въпроси по кода, може да ми драснеш на лично. Успех :)

0
YanaStamenova avatar YanaStamenova 16 Точки

Мерси. Ще разгледам и твоето решение. Новата информация, която трябва да науча всеки ден си расте експоненциално :) Става много забавно. 

1
YanaStamenova avatar YanaStamenova 16 Точки

Ето един въпрос. Ще можеш ли да  ми обясниш този ред код:  message = (index >= 0) ? $"{index}" : "No matches";

Тази въпросителна съм я срещала и на други места, но не мога да схвана какво прави. Намерих в  интернет ?? тази опция, но не е същото.

Благодаря!

1
RadostinStoychev avatar RadostinStoychev 112 Точки

Това е тернарен оператор (ternary). Накратко по-съкратен синтаксис на if-else.
В ляво е условието, след това въпросителна и 2та възможни изхода разделени с ":"
(условие) ? (изход 1) : (изход 2)
Тоест същото като:

if (index >= 0)
{
    message = index;
}
else
{
    message = "No matches";
}

Когато имаш 2 проверки можеш да го позлваш, защото е по-кратко като синтаксис. Може и да се нестват, за да обхванеш повече проверки if -- else if -- else if -- else... Но нестване на тернарен оператор е малко грозничко и нечетимо. Ако са само if -- else е доста приятно (Syntactic sugar). Ето още един пример с принтене и по 2та начина, за да е по-ясно:

int a = 10;
int b = 2;

Console.WriteLine(a > b ? "a is bigger" : "b is bigger");

if (a > b)
{
    Console.WriteLine("a is bigger");
}
else
{
    Console.WriteLine("b is bigger")
}

Ето един линк от Майкрософт за тернарния оператор:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator
И един от dot net perls:
https://www.dotnetperls.com/ternary

1
14/06/2019 19:46:54
YanaStamenova avatar YanaStamenova 16 Точки

Благодаря за обяснението. Малко късно отговарям, защото съобщението за твоя отговор ми беше попаднало в спам-а.

Относно този тернарен оператор - доста удобно ми звучи сега, когато знам какво представлява и прави.

1
s.boyadjiev avatar s.boyadjiev 6 Точки

RadostinStoychev, колко красив код!!! Като видях твоето решение и после си погледнах моя код, леко ми се повдигна :D . Надявам се и аз да пиша така скоро, но честно казано не вярвам да е близките месеци. Все пак съм доволен, че успях да добутам 100/100 сам, макар и с 300 реда грозен код. Оптимизацията ще я тренираме по-натам :) .

1
16/10/2019 11:02:28
RadostinStoychev avatar RadostinStoychev 112 Точки

Xaxa Благодаря ти s.boyadjiev

Сега като си гледам кода, мисля че може да стане много по-добре, но здраве да е :D. Оптимизацията по-добре я прави на момента, че после няма да се върнеш на тази задачка :D. Не оставяй днешната работа за утре. Успех :)

0
s.boyadjiev avatar s.boyadjiev 6 Точки

Не ми е зора задачата. Харесвам принципа: "Ако работи, не го пипай". Надявам се, че с увеличаване обема на наученото, оптимизацията ще става от самосебе си.

Поздрави!

0