Advertisement
kokusz19

MestInt.KetszemelyesV1

May 25th, 2018
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.08 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.  *                  A
  8.  *         B                C
  9.  *     D   E   F        G       H
  10.  *   I   J     K                L
  11.  * */
  12. namespace ketszemelyesV1
  13. {
  14.     class Csucs
  15.     {
  16.         public int szulosorszam;
  17.         public int sorszam;
  18.         public String nev;
  19.         public int letezik;
  20.  
  21.         public List<int> gyerekekInt = new List<int>();
  22.         public List<String> gyerekekString = new List<string>();
  23.  
  24.         public Csucs(int szulosorszam, int sorszam, String nev)
  25.         {
  26.             this.szulosorszam = szulosorszam;
  27.             this.sorszam = sorszam;
  28.             this.nev = nev;
  29.         }
  30.     }
  31.  
  32.     class Program
  33.     {
  34.  
  35.         static void treeSetup(List<Csucs> lista)
  36.         {
  37.             lista.Add(new Csucs(0, 1, "A"));
  38.             lista.Add(new Csucs(1, 2, "B"));
  39.             lista.Add(new Csucs(1, 3, "C"));
  40.             lista.Add(new Csucs(2, 4, "D"));
  41.             lista.Add(new Csucs(2, 5, "E"));
  42.             lista.Add(new Csucs(2, 6, "F"));
  43.             lista.Add(new Csucs(3, 7, "G"));
  44.             lista.Add(new Csucs(3, 8, "H"));
  45.             lista.Add(new Csucs(4, 9, "I"));
  46.             lista.Add(new Csucs(4, 10, "J"));
  47.             lista.Add(new Csucs(6, 11, "K"));
  48.             lista.Add(new Csucs(8, 12, "L"));
  49.  
  50.             foreach (Csucs item in lista)
  51.             {
  52.                 foreach (Csucs item2 in lista)
  53.                 {
  54.                     if (item.sorszam != item2.sorszam && item.sorszam == item2.szulosorszam)
  55.                     {
  56.                         item.gyerekekInt.Add(item2.sorszam);
  57.                         item.gyerekekString.Add(lista.Where(x => x.sorszam == item2.sorszam).First().nev);
  58.  
  59.                     }
  60.                 }
  61.                 item.letezik = 1;
  62.             }
  63.         }
  64.  
  65.         static void kiirFullLista(List<Csucs> lista)
  66.         {
  67.             Console.WriteLine();
  68.             foreach (Csucs item in lista)
  69.             {
  70.                 if (item.letezik == 1)
  71.                 {
  72.                     Console.Write(item.sorszam + ".\t" + item.nev + "\t(szulo: " + item.szulosorszam + " gyerekei:");
  73.                     if (item.gyerekekInt.Count != 0)
  74.                     {
  75.                         foreach (int item2 in item.gyerekekInt)
  76.                         {
  77.                             Console.Write("  " + item2 + "(" + lista.Find(x => x.sorszam == item2).nev + ")");
  78.                         }
  79.                     }
  80.                     else
  81.                         Console.Write("  level elem");
  82.                     Console.WriteLine(")");
  83.                 }
  84.             }
  85.         }
  86.  
  87.         static void csucsGyerekeiTorlese(List<Csucs> lista)
  88.         {
  89.             hiba: Console.WriteLine();
  90.             int sorszam = int.Parse(Console.ReadLine());
  91.  
  92.             if (lista.Find(x => x.sorszam == sorszam).gyerekekInt.Count() == 0)
  93.             {
  94.                 Console.WriteLine("nincs gyereke a csucsnak, minimum egy gyereket torolni kell, valasszon ujra!");
  95.                 goto hiba;
  96.             }
  97.  
  98.             else
  99.             {
  100.                 Csucs szulo = lista.Find(x => x.sorszam == sorszam);
  101.  
  102.                 // unokáknak.szülő updateje
  103.                 foreach (var gyerek in lista.Where(x=>x.szulosorszam == szulo.sorszam))
  104.                 {
  105.                     foreach (var gyerekgyerekei in gyerek.gyerekekInt)
  106.                     {
  107.                         if(lista.Find(y => y.sorszam == gyerekgyerekei).letezik == 1)
  108.                             lista.Find(y => y.sorszam == gyerekgyerekei).szulosorszam = szulo.sorszam;
  109.                     }
  110.                 }
  111.  
  112.                 // szülő gyerekeinek torlese
  113.                 foreach (int item in szulo.gyerekekInt)
  114.                 {
  115.                     foreach (var item2 in lista)
  116.                     {
  117.                         if (item2.sorszam == item)
  118.                             lista.Find(x => x == item2).letezik = 0;
  119.                     }
  120.                 }
  121.                
  122.                 // szülő.gyerekei update
  123.                 lista.Find(x => x.sorszam == sorszam).gyerekekInt.Clear();
  124.                 lista.Find(x => x.sorszam == sorszam).gyerekekString.Clear();
  125.                 foreach (Csucs item in lista)
  126.                 {
  127.                     if(item.szulosorszam == szulo.sorszam && item.letezik == 1)
  128.                     {
  129.                         lista.Find(x => x.sorszam == sorszam).gyerekekInt.Add(item.sorszam);
  130.                         lista.Find(x => x.sorszam == sorszam).gyerekekString.Add(item.nev);
  131.                     }
  132.                 }
  133.                
  134.             }
  135.  
  136.  
  137.         }
  138.  
  139.         static void Main(string[] args)
  140.         {
  141.             List<Csucs> lista = new List<Csucs>();
  142.             treeSetup(lista);
  143.  
  144.             kiirFullLista(lista);
  145.  
  146.             while (lista.Count() != 1)
  147.             {
  148.                 csucsGyerekeiTorlese(lista);
  149.                 kiirFullLista(lista);
  150.             }
  151.  
  152.             Console.ReadKey();
  153.         }
  154.     }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement