Loading...
petrovaliev95 avatar petrovaliev95 358 Точки

[Homework] OOP - Functional Programming - Септември 2014

Здравейте, колеги

 

Не видях да има такава тема в форума, така че предлагам тук да обсъждаме задачите от темата. Задачите са много интересни макар и някои да са труднички.

Ето някои от задачите:

 

1. StringBuilder Extensions

2. Custom LINQ Extension Methods

3-14. Class Student

14. Не съм сигурен, че разбрах условието на задачата, но ако някой забележи нещо нередно да пише.

 

Същто така открих някои грешки в домашното. Дано са ви от полза:

1. Първа задача последния пример "AppendAll" трябва да е --> AppendAll<Т>(IEnumerable<T> items) - изпуснато е това "<Т>" след "AppendAll".

2. Втора задача последния пример "WhereEndsWith" трябва да е --> 
public static IEnumerable<string> WhereEndsWith(this IEnumerable<string> collection, IEnumerable<string> suffixes) {...} - след името на метода не трябва да има "<string>" и "suffixes" колекцията не трябва да е "this" иначе се губи целия смисъл на условието на задачата.

3. В 6-та задача се изисква студентите да се филтрират по "Age", а в 3-та задача никъде не е казано, че студента трябва да има "Age". 

4. В 13-та задача също се изисква "GroupName" което не е упоменато в 3-та задача.

 

Много бих се радвал на някакви критики относно задачите, ще са ми от полза.

 

П.С. Грешките са коригирани!

 

Поздрави, Даниел

 

    

17
C# OOP Basics 28/09/2014 22:57:17
milen8204 avatar milen8204 296 Точки

Благодаря и Браво на колегите, които си предоставят решенията на домашните.

Огромна част от решенията помагат да навлезем в нещата по - бързо.

Имам само един въпрос, по StringBilderExtensions и по - скоро в метода:

public static StringBuilder RemoveText(this StringBuilder strBuilder,
string textToReplace)
{
strBuilder.Replace(textToReplace, "");
return strBuilder;
}

по условие не трябва ли изтриването да е "нечувствително" към малки и главни букви, а до колкото виждам strBuilder.Replace(textToReplace, ""); си е отсякъде чувствително. Ако нещо аз не съм разбрал се извинявам.

Поздрави!

3
petrovaliev95 avatar petrovaliev95 358 Точки

Напълно си прав колега, благодаря за отделеното време. Това е моя грешка. Ако си видял по-рано колегата Цецо ме подсети за грешката, но така и не остана време да я оправя, но по късно след лекцията ще седна да я коригирам. Благодаря ти отново!

6
01/10/2014 18:19:54
Karlie avatar Karlie 438 Точки

Здравейте, колеги,

Пиша си домашните бавно и славно и стигнах до едно нещо, което не мога да разгадая защо се получава така. Моля, някой ако знае какъв е проблемът, да ме светне.

Ето ми домашното. Става въпрос за задача 11, Weak students. (Да, знам ,че начинът по който се мъча да я реша е супер дърварски и видях вашите елегантни решения. Даже се чудех дали да се срамя като си качвам задачите тук smile ) Както и да е, въпросът ми е следният: в момента съм си направила extension method в нов клас, CheckIfPoor(). Когато пусна метода обаче, става така, че изтрива двойките от оценките в обекта Студент, въпреки че самият метод работи с нов лист от инт grades,  а не с оригиналният student.Marks:

public static bool CheckIfPoor(this Student student, int numberOfPoorGrades)
        {
            int count = 0;
            List<int> grades = new List<int>();
            grades = student.Marks;

            while (grades.Contains(2))
            {
                count++;
                int firstIndex = grades.IndexOf(2);
                grades.RemoveAt(firstIndex);
            }

и т.н., и т.н.

След като се изпълни метода, в student.Marks вече няма двойки. Защо става така? Нали ги чистя от grades, а не от student.Marks...

0
14/10/2014 00:57:29
ttitto avatar ttitto 1153 Точки

 List<int> grades = new List<int>();
 grades = student.Marks;

Ти създаваш нов лист, но веднага след това му казваш, че вече не е нов, а е списъкът на студента.

Просто към новият лист добави този на студента: 

 List<int> grades = new List<int>();

grades.AddRange(student.Marks);

1
13/10/2014 18:28:44
RoYaL avatar RoYaL Trainer 6849 Точки

Не ти вярвам, тито :) Не мога да го тествам в момента, но съм на 80% убеден, че кодът ти, ще има абсолютно същия бихейвиър както и този на Карли? :) Списъците са референтни типове, този assignation не би трябвало да работи в никой от двата случая.

Не съм убеден дори, че и подаването в конструктора би помогнало:  List<int> grades = new List<int>(student.Marks);

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

Ще го тествам като се прибера вкъщи, че е възможно и да говоря глупости. Междувременно може да ме опровергаете с ваши тестове :)

2
ttitto avatar ttitto 1153 Точки

Няма нужда да го тестваш :) Прав си! Написал съм голяма глупост. Ще го коригирам, че ме е срам да се вижда подобно нещо от мен. :)

0
sjuesju avatar sjuesju 10 Точки

Здравейте, дали някой може да ми даде линк към условията на задачите? Това, което взимам от сайта винаги се оказва с повреден и нечетим файл. Предварителни благодарности.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.