Advertisement
simonradev

BookLibraryUpgrade

Feb 9th, 2017
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.05 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace BookLibrary
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int n = int.Parse(Console.ReadLine());
  14.  
  15.             Library lib = new Library();
  16.  
  17.             //Името не е задължително, класа Library е само организационна единица, която замества List<Books>.
  18.             lib.Name = "bookStorage";
  19.  
  20.             //На 30 ред гърмеше, защото се опитваш да правиш някакви неща с речник, а той не съществува.
  21.             //Аз го промених с лист, но процедурата е същата, трябва да си го създадеш.
  22.             lib.books = new List<Books>();
  23.  
  24.             for (int i = 0; i < n; i++)
  25.             {
  26.                 List<string> info = Console.ReadLine().Split(' ').ToList();
  27.  
  28.                 string title = info[0];
  29.                 string author = info[1];
  30.  
  31.                 //Промяната от '.' на ',' на мен ми чупи изхода, затова го премахнах
  32.                 //Ако имаш проблем с разделителя на десетичните числа си промени регионалните настройки.
  33.                 decimal price = decimal.Parse(info[5]);
  34.                
  35.                 //Проверявам дали в листа същестува такъв автор и ако не съществува, създаваме.
  36.                 if (!lib.books.Any(a => a.Author == author))
  37.                 {
  38.                     Books newBook = new Books();
  39.                     newBook.Author = author;
  40.                     newBook.Price = price;
  41.  
  42.                     lib.books.Add(newBook);
  43.                 }
  44.                 //Ако вече има такъв автор го намираме и му добаваме "price";
  45.                 else
  46.                 {
  47.                     Books toUpgrade = lib.books.First(a => a.Author == author);
  48.                     toUpgrade.Price += price;
  49.                 }
  50.             }
  51.  
  52.             //Принтирам подредено по изискванията.
  53.             foreach (Books book in lib.books
  54.                                       .OrderByDescending(p => p.Price)
  55.                                       .ThenBy(a => a.Author))
  56.             {
  57.                 Console.WriteLine($"{book.Author} -> {book.Price:f2}");
  58.             }
  59.         }
  60.     }
  61. }
  62.  
  63. class Library
  64. {
  65.     public string Name { get; set; }
  66.     //Не е нужно да се пазят в дикшънари, един лист ти върши перфектна работа.
  67.     public List<Books> books { get; set; }
  68. }
  69.  
  70. class Books
  71. {
  72.     //За задачата е достатъчно да държиш само автор и име.
  73.     public string Author { get; set; }
  74.     public decimal Price { get; set; }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement