Advertisement
vencinachev

Task6

Oct 28th, 2022
1,246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.24 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 Nets
  8. {
  9.  
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             // в масива се записват всички имена на язовири
  15.             // спрямо номера на индекса, разбираме реда на постъпване на язовира от входа
  16.             List<string> dam = new List<string>();
  17.  
  18.             // в масива се записват всички имена на язовири
  19.             // спрямо номера на индекса, разбираме реда на постъпване на язовира от входа
  20.             List<string> inputConnections = new List<string>();
  21.  
  22.             // в масива съхраняваме всички двойни връзки
  23.             List<string> middleConnections = new List<string>();
  24.  
  25.             while (true)
  26.             {
  27.                 string input = Console.ReadLine();
  28.                 if (input == "end")
  29.                 {
  30.                     break;
  31.                 }
  32.                 string[] dams = input.Split(' ').ToArray();
  33.                  // с двете проверки проверяваме дали всеки от срещнатите язовири е в масива
  34.                  // добавяме го, само ако преди това не сме го добавили
  35.                 if (!dam.Contains(dams[0]))
  36.                 {
  37.                     dam.Add(dams[0]);
  38.                 }
  39.                 if (!dam.Contains(dams[1]))
  40.                 {
  41.                     dam.Add(dams[1]);
  42.                 }
  43.  
  44.                 bool flag = false; // флагът се използва като индикация дали сме намерили междинна връзка
  45.                 // този цикъл проверява дали текущата връзка е двупосочна
  46.                 for (int i = 0; i < inputConnections.Count; i++)
  47.                 {
  48.                     // междинна е всяка двупосочна връзка
  49.                     // за да бъде една връзка ако напр. А B == B A като разместим местата на B и А във втория израз
  50.                     if (inputConnections[i] == dams[1] + " " + dams[0])
  51.                     {
  52.                         flag = true;
  53.                         middleConnections.Add(inputConnections[i]); // добавяме двойната връзка в масива
  54.                     }
  55.                 }
  56.                 if (!flag)
  57.                 {
  58.                     // добавяме новата връзка, ако не е двойна. Ако връзката е двойна няма смисъл да я добавяме втори път в масива
  59.                     inputConnections.Add(dams[0] + " " + dams[1]);
  60.                 }
  61.             }
  62.  
  63.             if (middleConnections.Count > 0)
  64.             {
  65.                 // изпечатваме всички двойни връзки
  66.                 foreach (var item in middleConnections)
  67.                 {
  68.                     string[] connection = item.Split(' ').ToArray();
  69.                     // с тази проверка проверявам коя връзка да изкараме напр. А<->B или B<->A
  70.                     // това става като проверим кой язовир сме го вкарали първи при въвеждането на данните
  71.                     if (dam.IndexOf(connection[0]) < dam.IndexOf(connection[1]))
  72.                     {
  73.                         Console.WriteLine($"{connection[0]}<->{connection[1]}");
  74.                     }
  75.                     else
  76.                     {
  77.                         Console.WriteLine($"{connection[1]}<->{connection[0]}");
  78.                     }
  79.                 }
  80.             }
  81.             else
  82.             {
  83.                 // изкарваме съобщението ако няма междинни връзки
  84.                 Console.WriteLine("Disconnected");
  85.             }
  86.         }
  87.     }
  88. }
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement