Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- namespace _04.Weather
- {
- class Program
- {
- static void Main(string[] args)
- {
- //while цикъл
- string input = Console.ReadLine(); //не всичко от входа ми трябва, изолирам end
- string pattern = @"([A-Z]{2})([0-9]+\.[0-9]{1,2})([A-Za-z]+)\|";
- //ще изскачат нови редове, и ще ги запаметя в лист, който да ползвам за входни данни, защото в пръвия input попада и end
- List<string> lines = new List<string>();
- while (input!="end") //слагам края на цикъла
- {
- lines.Add(input); //пълня празния лист
- input = Console.ReadLine();
- }
- List<Match> myMatches = new List<Match>(); //два сорта имам . УНИКАЛНОТО е че листа от мачове дава възможност за групи, които после ще ползваме
- foreach (var line in lines) //от листа с всеки вкаран ред
- {
- MatchCollection m = Regex.Matches(line,pattern); //и искам да събера мачовете на един ред
- //сега ги пълня в листа
- foreach (Match thisMatch in m) //тук всички съвпадения в линията ще ги запише в лист
- {
- myMatches.Add(thisMatch); //във вложения foreach всички съвпадения в линията ще ги запише в листа
- }
- }
- //като се извъртят двата цикъла ще имам мачове в myMatch, но не е готово за принт, защото има по условие че може да се презаписват данни
- //в такъв случай се ползва Dictionary
- Dictionary<string, List<string>> weather = new Dictionary<string, List<string>>();
- foreach (Match current in myMatches) //с този цикъл ще напълня речника, чрез проверки и въпроси
- {
- //ако речника не съдържа (града , който е група 1 , стойността му)
- if (!weather.ContainsKey(current.Groups[1].Value))
- {
- //ако не съдържа ще пълним листа, който е всъщност Value от kvp
- List<string> list = new List<string>();
- list.Add(current.Groups[2].Value); //това е list за Value
- list.Add(current.Groups[3].Value); //това е list за Value
- weather.Add(current.Groups[1].Value, list); //това е Key в Dictionary
- }
- else //ако го има
- {
- //изчистваме листа и добавяме новите две данни
- weather[current.Groups[1].Value].Clear(); //изтривам го
- weather[current.Groups[1].Value].Add(current.Groups[2].Value);
- weather[current.Groups[1].Value].Add(current.Groups[3].Value);
- }
- }
- foreach (var pair in weather.OrderBy(x => double.Parse(x.Value[0])))
- {
- Console.WriteLine($"{pair.Key} => {double.Parse(pair.Value[0]):F2} => {pair.Value[1]}");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement