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

5. Book Library Compile time error

Здравейте,

Решавам тази интересна задача, но последния тест ми гърми с Compile time error и не мога да разбера защо.

 

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

http://pastebin.com/FGHnZwqC

 

 

1.Book Library

To model a book library, define classes to hold a book and a library. The library must have a name and a list of books. The books must contain the title, author, publisher, release date, ISBN-number and price.

Read a list of books, add them to the library and print the total sum of prices by author, ordered descending by price and then by author’s name lexicographically.

Books in the input will be in format {title} {author} {publisher} {release date} {ISBN} {price}.

Examples

Input

Output

5

LOTR Tolkien GeorgeAllen 29.07.1954 0395082999 30.00

Hobbit Tolkien GeorgeAll 21.09.1937 0395082888 10.25

HP1 JKRowling Bloomsbury 26.06.1997 0395082777 15.50

HP7 JKRowling Bloomsbury 21.07.2007 0395082666 20.00

AC OBowden PenguinBooks 20.11.2009 0395082555 14.00

Tolkien -> 40.25

JKRowling -> 35.50

OBowden -> 14.00

Тагове:
0
Fundamentals Module 14/10/2016 22:12:45
Maria_ls avatar Maria_ls 383 Точки

Ето ти вход, който гърми:

3
LOTR Tolkien GeorgeAllen 29.07.1954 0395082999 30.00
HP1 JKRowling Bloomsbury 26.06.1997 0395082777 30.00
AC OBowden PenguinBooks 20.11.2009 0395082555 30.00

Грешката идва от това, че при някое от множеството прехвърляния от речник в речник създаваш дублиран ключ от еднакви цени (в случая на 56-ти ред) - там използваш Add, който действа само за несъществуващ досега ключ, от там нататък гърми. Помисли за друг подход как да си улесниш живота с използване на LINQ и Lambda, за да избегнеш допълнителните речници, иначе ще ти трябват още проверки преди добавяне в тях

Това е моето решение, ако сметнеш че би ти било полезно

A в това видео от 13,10,2016, след 33-34-та минута решават същата задача, можеш да го прегледаш, а преди това прегледай и лекцията за Речници, Linq и Lambda, а също и упражненията към нея, за да ти се поизяснят принципите.

0
14/10/2016 23:27:25
tiapko avatar tiapko 31 Точки

Много благодаря,

Аз се мъчех да наравя нов Dictionary с подредените елементи, защото не знаех, че могат да се подреждат във foreach-a с Linq. Без да се замислям, че price може да не е уникален и както се случи при мен да счупи програмата.

 

            foreach (var key in authorLib.OrderByDescending(priceTage => priceTage.Value).ThenBy(author => author.Key))
            {
                Console.WriteLine($"{key.Key} -> {key.Value:0.00}");
            }

 

1