[Homework] Programming Fundamentals - Objects and classes - Exercise 04 - Average Grades
Здравейте, имам проблем със сортирането на данните при изхода.
https://softuni.bg/downloads/svn/soft-tech/May-2016/Programming-Fundamentals-May-2016/06.%20Programming-Fundamentals-Objects-and-Classes/06.%20Programming-Fundamentals-Objects-and-Classes-Exercises.docx - Линк към документа на заданието
http://pastebin.com/F2fK4LM0 - Линк към кода ми.
Проблемът е, че когато входът съдържа повтарящи се ключове (Имена на студенти в случая) хвърля exception. Очевидно OrderedList не е най-подходящата структура от данни за случая. Основният ми въпрос е: Коя структура от данни би ми позволила да държа данни в подреден ред със дубликати на ключовете по възможно най-мързеливият начин?
Допълнителни въпроси:
- Щом листът не допуска повтарящи се ключове, каква е разликата между Ordered List и Ordered Dictionary, освен performance, memory usage etc. ?
- Как бих могъл да сортирам по два начина едновременно структурата (Веднъж по име [с висок приоритет] и втори път по средноаритметичната оценка [ с нисък приоритет] )
Наясно съм, че може да се направи с повече код задачата, но ми се ще да не променям много много структурата на програмата, понеже до тук ми се струва сравнително елегантно решението, може представата за елегантност да ми е погрешна разбира се (не съм минал КПК (: ). Благодаря предварително (:
Листът е generic, така че може всякакви типове данни да слагаш вътре. В неподредения лист можеш да слагаш повтарящи се елементи, докато в подредения не можеш.
orderBy/thenBy бяха полезни, обаче ги подрежда наобратно поради някаква причина и трябва да слагам Reverse().
http://pastebin.com/cwgF5CwC
Минава нулевите тестове, и дава грешни отговори на 6/8, 20 от 100 точки :D. Май ще я правя наново изоснови утре.
Да можеш да слагаш всякакви типове данни в листа, но индексите им ще са различни - нали именно за тях питаше. Щом ти ги сортира на обратно има orderByDescending, което ще ти ги сортира в обратен ред спрямо orderBy. Нопри теб проблема е че този ред въобще не ти сортира: list.OrderBy(x => x._name).ThenBy(x => x._averageGrade);
Трябва да е ето така за да работи : list = list.OrderBy(x => x._name).ThenBy(x => x._averageGrade).toList();
Прав си, избутахме до 50/100.
EDIT: 100/100 бях изпуснал един по-малко или равно знак. Благодаря ти за помоща.