Threed90

05. Book Library

Nov 7th, 2018
119
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Globalization;
  4. using System.Linq;
  5.  
  6. namespace _05.BookLibrary
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             int iteration = int.Parse(Console.ReadLine());
  13.  
  14.             List<Book> books = new List<Book>();
  15.  
  16.             Library library = new Library("Library", books);
  17.  
  18.             for (int i = 0; i < iteration; i++)
  19.             {
  20.                 books.Add(ReadBook());
  21.             }
  22.  
  23.             Console.WriteLine(library);
  24.         }
  25.  
  26.         private static Book ReadBook()
  27.         {
  28.             string[] input = Console.ReadLine().Split().ToArray();
  29.  
  30.             return new Book(input[0], input[1], input[2],
  31.                             DateTime.ParseExact(input[3], "dd.MM.yyyy", CultureInfo.InvariantCulture),
  32.                             input[4], double.Parse(input[5]));
  33.         }
  34.     }
  35.   class Book
  36.     {
  37.         public string Title { get; set; }
  38.         public string Author { get; set; }
  39.         public string Publisher { get; set; }
  40.         public DateTime ReleaseDate { get; set; }
  41.         public string ISBN { get; set; }
  42.         public double Price { get; set; }
  43.  
  44.         public Book(string title, string author, string publisher, DateTime releaseDate, string ISBN, double price)
  45.         {
  46.             this.Title = title;
  47.             this.Author = author;
  48.             this.Publisher = publisher;
  49.             this.ReleaseDate = releaseDate;
  50.             this.ISBN = ISBN;
  51.             this.Price = price;
  52.         }
  53.     }
  54.   class Library
  55.     {
  56.         public string Name { get; set; }
  57.         public List<Book> Books { get; set; }
  58.  
  59.         public Library(string name, List<Book> books)
  60.         {
  61.             this.Name = name;
  62.             this.Books = books;
  63.         }
  64.  
  65.         public override string ToString()
  66.         {
  67.             Dictionary<string, double> result = new Dictionary<string, double>();
  68.             foreach (Book item in Books)
  69.             {
  70.                 if(!result.ContainsKey(item.Author))
  71.                 {
  72.                     result.Add(item.Author, item.Price);
  73.                 }
  74.                 else
  75.                 {
  76.                     result[item.Author] += item.Price;
  77.                 }
  78.             }
  79.             string final = string.Join(Environment.NewLine, result.OrderByDescending(x => x.Value).ThenBy(x => x.Key).Select(x => new string($"{x.Key} -> {x.Value:f2}".ToCharArray())).ToArray());
  80.             return final;
  81.         }
  82.     }
  83. }
RAW Paste Data