VD_Iordanov

Plant Discovery

Aug 9th, 2020
103
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.Linq;
  4.  
  5. namespace Destination_Mapper
  6. {
  7.     class Plant
  8.     {
  9.         string plantName;
  10.         int rarity;
  11.         List<double> rates = new List<double>();
  12.         double averageValue = 0;
  13.         public void addRate(double rate )
  14.         {
  15.             this.averageValue = 0;
  16.             this.rates.Add(rate);
  17.             for (int i = 0; i < this.rates.Count; i++)
  18.             {
  19.                 this.averageValue += this.rates[i];
  20.             }
  21.             this.averageValue = this.averageValue / this.rates.Count;
  22.         }
  23.         static void Main(string[] args)
  24.         {
  25.             int n = int.Parse(Console.ReadLine());
  26.             Dictionary<string, Plant> dict = new Dictionary<string, Plant>();
  27.             for (int i = 0; i < n; i++)
  28.             {
  29.                 string plant = Console.ReadLine();
  30.                 string[] plantParts = plant.Split("<->");
  31.                 if (dict.ContainsKey(plantParts[0]))
  32.                 {
  33.                     dict[plantParts[0]].rarity = int.Parse(plantParts[1]);
  34.                 }
  35.                 else
  36.                 {
  37.                     Plant p = new Plant();
  38.                     p.plantName = plantParts[0];
  39.                     p.rarity = int.Parse(plantParts[1]);
  40.                     dict.Add(plantParts[0], p);
  41.                 }
  42.  
  43.             }
  44.             string command = Console.ReadLine();
  45.             while (!command.Contains("Exhibition"))
  46.             {
  47.                 string[] values = command.Split(" ");
  48.                 if (values[0].Contains("Rate"))
  49.                 {
  50.                     if (dict.ContainsKey(values[1]))
  51.                     {
  52.                         //dict[values[1]].rates.Add(double.Parse(values[3]));
  53.                         dict[values[1]].addRate(double.Parse(values[3]));
  54.                     }
  55.                     else
  56.                     {
  57.                         Console.WriteLine("error");
  58.                     }
  59.                 }
  60.                 if (values[0].Contains("Update"))
  61.                 {
  62.                     if (dict.ContainsKey(values[1]))
  63.                     {
  64.                         dict[values[1]].rarity = int.Parse(values[3]);
  65.                     }
  66.                     else
  67.                     {
  68.                         Console.WriteLine("error");
  69.                     }
  70.                 }
  71.                 if (values[0].Contains("Reset"))
  72.                 {
  73.                     if (dict.ContainsKey(values[1]))
  74.                     {
  75.                         dict[values[1]].rates.Clear();
  76.                         dict[values[1]].averageValue = 0;
  77.                     }
  78.                     else
  79.                     {
  80.                         Console.WriteLine("error");
  81.                     }
  82.                 }
  83.                 command = Console.ReadLine();
  84.             }
  85.             Console.WriteLine("Plants for the exhibition:");
  86.             foreach (var item in dict.OrderByDescending(x => x.Value.rarity).ThenByDescending(x => x.Value.averageValue))
  87.             {
  88.                 Console.WriteLine($"- {item.Key}; Rarity: {item.Value.rarity}; Rating: {item.Value.averageValue:f2}");
  89.             }
  90.  
  91.         }
  92.     }
  93. }
  94.  
RAW Paste Data