[Homework] Other Types (Dec 2015) - Решения
Здравейте колеги,
ето от мен решенията на първите 4 задачки.
https://github.com/vdonchev/OtherTypesInOOP-Homework
Ако някой има забележки, коментари и др подобни, нека сподели :)
Поздрави!
Здравейте колеги,
ето от мен решенията на първите 4 задачки.
https://github.com/vdonchev/OtherTypesInOOP-Homework
Ако някой има забележки, коментари и др подобни, нека сподели :)
Поздрави!
На 3-та задача в метода Insert не си проверил случая когато ако имаш например 4-та елемента в масива, какво ще стане ако някой иска да добави елемент на 5 индекс или на -2 индекс.
Поздрави
Ето ги и мойте задачи...
Мислех, че 5-та задача ще е по-трудна от колкото беше.
Просто библиотеката docX е направена доста добре и лесно се използва, за малко повече от час направих нещо подобно на желаното по задачата.
@Виделин
Разгледах ти дженерик листа, защото харесвам структурите от данни и винаги ми е интересно как някой вижда вътрешните им имплементации : )
Всичко чук, единствено ми направи впечатление, че може малко да опростиш ToString(). Tъй като първоначално ти е принтирало разни нули или null-oве в края, си използвал take, за а ограничиш до релевантните за колекцията елементи. Има един трик, обаче. Понеже си имплементирал IEnumerable<T>, a string.Join(), работи точно с IEnumerable като втори параметър, достатъчно е
$"{string.Join(", ", this)}";
Нищо особено като забележка, обаче изглежда по-готино : )
Благодаря за коментара, не съобразих че мога да използвам направо this :), заради този единствен тейк юзвах linq.
Тъй като ми се иска да принтирам нещо и при празен лист, промених кода така:
public override string ToString()
{
return $"[{(this.Size > 0 ? string.Join(", ", this) : "")}]";
}
Малко стана кашаница, и трудно за четене но ... :)
Поздрави!
Здравей,
след като си реша задачките винаги гледам твоите решения. Въпреки че изглеждат... изкуствено усложнени? (оформлението всъщност много ми харесва и смятам следва добри практики, просто задачите са твърде прости), редовно научавам нови неща от твоя код. В домашното за наследяване и абстракция трябваше да изкараме гет свойствата в интерфейси. Виждам, че и тук си постъпил така. С чисто тренировъчна цел ли го правиш, защото не мога да намеря и един резултат в интернет, който препоръчва създаването на интерфейси само за екстрактване на гет методи?
// solutions coming sunday @ noon.
Разбира се, че с чисто тренировъчна цел си усложнявам някои неща :)
Иначе изобщо не претендирам, че кода ми е напълно коректен и може да се ползва като пример. Като минем КПК ще мога ти отговоря на въпроса :P
Поздрави и успех!
ПС. Ето тук можеш да прочетеш по въроса за интерфейсите: http://stackoverflow.com/questions/3036749/is-it-the-best-practice-to-extract-an-interface-for-every-class
Здравейте,
Имам един въпрос относно първа задача - валидацийте ми работят, всичко изглежда да ок, обаче след като кажа:
Location home = new Location();
Console.WriteLine(home);
И след това, в конзолата получавам това:
, - Mercury
Някой има ли идея как може да се направи валидация за горния случай и да се хвърли ексепшън?
Поздрави,
Иван
Я качи нкяъде целия файл и дай да видим кода.
Всъщност току що открих от къде е проблема - всичко беше заради начина, по който показвам даните. А иначе, когато няма параметри - всичко е 0.
Може би трябваше да помисля малко повече преди да питам :)
Здравейте колеги,
имам малък проблем с втора задача "Fraction Calculator".
Значи написах си структурата, overload-нах операторите + и -. Всичко работи. Смятам,че задачата е решена,тъй като плучавам резултата "13.4285... и т.н." от примера , но не мога да разбера от къде идват числата "368" и "28" на output-a. Според input-a това са Numerator-a и Denonominator-а на резултата. Не виждам от къде мога да дойдат тези числа.
Не мисля,че проблемът ми е в кода и за това не съм го качил, явно просто не разбирам напълно условието на задачата :(
Странно е как си успял да напишеш решението, без да разбереш откъде идват:Д Иначе 368 е нумератора на резултата. Получава се като умножиш нумератора на fraction1 с деномератора на fraction2 и това го събереш с произведението на нумератора на fraction2 и деномератора на fraction1. 28 e произведението на двата деномератора (прости операции с дроби).
Дано съм ти бил полезен :)
Просто изпирнти двете пропъртита на структурата (тези на нумератора и деноминатора) :)
Да. Разбрах къде ми е грешката. Проблема е,че аз не оперирах с целите обекти, а само с резултатите от делението вътре в структурата.
Благодаря biser.stoev
djc_bg2015 Тъй като не бях пипал изобщо пропъртитата при overload-ването на операторите, то те излизаха нули при принтирането :)
Оправих задачата. Това мисля,че е математика от 5 клас :D
Здравейте, колеги!
Имам проблем с принтирането на GenericList - а, състоящ се в това, че освен елементите в листа на конзолата ми изкарва и незаетите позиции с default стойност / в моя случай е 0/. Опитах се да сортирам позициите в метода ToString(),така че тези с default стойност да не се принтират, но тогава пък ако имам елемент равен на 0 също не се принтира. Ще се радвам някой да предложи решение.
Пробва ли с for(int i=0;i<index;i++) и ги слагаш в StringBuilder?
Не се бях сетил колега, ама мисля че ще стане така.
Здравейте колеги,
Може ли някой да ми даде градивна критика дали тази задача съм успял да я напиша правилно и ако не съм какво би трябвало да променя. ЦЪК
Проверката ти IsInRange трябва да проверява index >= 0
Понеже винаги когато този метод върне false хвърляш Exception можеш да пренесех хвърлянето на Exception на едно място - в метода.
Вместо ArgumentOutOfRange можеш да използваш IndexOutOfRange
Едно домашно и от мен с Unit тестове на функционалността на GenericList ;)
Мерси за коментара. В момента би трябвало вече да работи коректно.
Ако имаме 3 (индекс 0-2) елемента и добавим на индекс 3 ще работи
ако имаме 3 (индекс 0-2) елемента и добавим на индекс +3 ще хвърли ексепшън
Поздрави!