예제 #1
0
        static void Main(string[] args)
        {
            const string friendsNetworkData = "U31DUOM.txt";               //Duomenų failas, kuriame yra moksleivių ryšiai
            const string networkData        = "U32DUOM.txt";               //Duomenų failas, kuriame yra ieškomi moksleivių ryšiai
            const string resultsFile        = "U3REZ.TXT";                 // Pradiniai duomenys ir rezultatai išspausdinti lentele failas

            var pupilsContainer      = ReadPupilsData(friendsNetworkData); // Mokinių konteineris
            var pupilsContainerCopy2 = pupilsContainer.ShallowCopy();
            var network             = ReadNetworkData(networkData);        //Kuriuos rysius surasti
            var pupilContainerClone = pupilsContainer.ShallowCopy();       //Mokinių konteinerio kopija
            var alreadyKnowTest     = true;                                // Ar jau pažįstami testas
            var networkList         = new List <string>();                 // Ryšių sąrašas
            var removedPupil        = new Pupil();                         // Išimtas moksleivis
            var mutualFriends       = new List <string>();                 // Bendri draugai
            var alreadyBeenPupils   = new List <string>();                 // Jau buvę draugai


            PrintToConsole(pupilsContainer, network, alreadyKnowTest, networkList, removedPupil, mutualFriends, alreadyBeenPupils, friendsNetworkData, networkData);
            Console.WriteLine($"Pradiniai duomenys ir rezultatai spausdinami lentelėmis tekstiniame faile: {resultsFile}");
            mutualFriends.Clear();
            PrintToReportTable(pupilsContainer, network, alreadyKnowTest, networkList, removedPupil, mutualFriends, alreadyBeenPupils, friendsNetworkData, networkData, resultsFile);
            Console.ReadKey();
        }
예제 #2
0
        /// <summary>
        /// Spausdina duomenys ir rezultatus į tekstinį failą
        /// </summary>
        /// <param name="pupilsContainer"> Moksleivių konteineris </param>
        /// <param name="network"> Ieškomų moksleivių ryšys </param>
        /// <param name="alreadyKnowTest"> Ar jau pažįstami </param>
        /// <param name="networkList"> Ryšių sąrašas </param>
        /// <param name="removedPupil"> Pašalintas moksleivis </param>
        /// <param name="mutualFriends"> Bendri draugai </param>
        /// <param name="friendsNetworkData"> Moksleivių ryšių duomenų failas </param>
        /// <param name="networkData"> Ieškomų moksleivių ryšių duomenų failas </param>
        /// <param name="resultsFile"> Rezultatų failas </param>
        static void PrintToReportTable(PupilsContainer pupilsContainer, List <PupilsNetwork> network, bool alreadyKnowTest, List <string> networkList, Pupil removedPupil, List <string> mutualFriends, List <string> alreadyBeenPupils,
                                       string friendsNetworkData, string networkData, string resultsFile)
        {
            using (var writer = new StreamWriter(resultsFile, false, Encoding.UTF8))
            {
                writer.WriteLine("Pradiniai Duomenys");
                writer.WriteLine();
                writer.WriteLine(friendsNetworkData);
                writer.WriteLine("Moksleiviai");
                writer.WriteLine(new string('-', 85));
                for (int i = 0; i < pupilsContainer.Count; i++)
                {
                    writer.WriteLine("| {0, -25} | {1, 25} | {2, -25} |", "Moksleivio vardas", "Kiek draugų turi", "Moksleivio draugai");
                    writer.WriteLine(pupilsContainer.GetPupil(i).PrintPupilToReportTable());
                    writer.WriteLine(new string('-', 85));
                }
                writer.WriteLine();
                writer.WriteLine("Ieškomų moksleivių ryšiai");
                writer.WriteLine(networkData);
                writer.WriteLine(new string('-', 76));
                writer.WriteLine("| {0, -29} | {1, -40} |", "Pirmojo moksleivio vardas", "Antrojo moksleivio vardas");
                writer.WriteLine(new string('-', 76));
                foreach (var friend in network)
                {
                    writer.WriteLine(friend.PrintNetworkToReportTable());
                }
                writer.WriteLine(new string('-', 76));

                writer.WriteLine();
                writer.WriteLine("Rezultatai");
                writer.WriteLine(resultsFile);
                writer.WriteLine(new string('-', 119));
                writer.WriteLine("| {0, -29} | {1, -40} | {2, -40} |", "Pirmojo moksleivio vardas", "Antrojo moksleivio vardas", "Ryšys");
                writer.WriteLine(new string('-', 119));
                foreach (var friend in network)
                {
                    //var pupilsContainerCopy = pupilsContainer.ShallowCopy();
                    var result = NetworkResult(pupilsContainer, friend.FirstFriend, friend.SecondFriend, alreadyKnowTest, networkList, removedPupil, mutualFriends, alreadyBeenPupils);
                    writer.WriteLine($"{friend.PrintNetworkToReportTable()} {result,-40} |");
                }
                writer.WriteLine(new string('-', 119));
            }
        }
예제 #3
0
        /// <summary>
        /// Spausdina duomenys ir rezultatus į konsolę
        /// </summary>
        /// <param name="pupilsContainer"> Moksleivių konteineris </param>
        /// <param name="network"> Ieškomų moksleivių ryšys </param>
        /// <param name="alreadyKnowTest"> Ar jau pažįstami </param>
        /// <param name="networkList"> Ryšių sąrašas </param>
        /// <param name="removedPupil"> Pašalintas moksleivis </param>
        /// <param name="mutualFriends"> Bendri draugai </param>
        /// <param name="friendsNetworkData"> Moksleivių ryšių duomenų failas </param>
        /// <param name="networkData"> Ieškomų moksleivių ryšių duomenų failas </param>
        static void PrintToConsole(PupilsContainer pupilsContainer, List <PupilsNetwork> network, bool alreadyKnowTest, List <string> networkList, Pupil removedPupil, List <string> mutualFriends, List <string> alreadyBeenPupils,
                                   string friendsNetworkData, string networkData)
        {
            Console.WriteLine("LD_16.Pazintis");
            Console.WriteLine("Pradiniai duomenys");
            Console.WriteLine();
            Console.WriteLine($"Pirmasis duomenu failas {friendsNetworkData}");
            Console.WriteLine();
            for (int i = 0; i < pupilsContainer.Count; i++)
            {
                Console.WriteLine($"{pupilsContainer.GetPupil(i).PrintToConsolePupil()}");
            }

            Console.WriteLine();
            Console.WriteLine($"Antrasis duomenu failas {networkData}");
            {
                foreach (var friend in network)
                {
                    Console.WriteLine(friend.PrintToConsoleNetwork());
                }
            }

            Console.WriteLine();
            Console.WriteLine("Rezultatai");
            foreach (var pupil in network)
            {
                Console.WriteLine($"Surasti santykius tarp: {pupil.FirstFriend} ir {pupil.SecondFriend}");
                var pupilsContainerCopy = pupilsContainer.ShallowCopy();
                var result = NetworkResult(pupilsContainerCopy, pupil.FirstFriend, pupil.SecondFriend, alreadyKnowTest, networkList, removedPupil, mutualFriends, alreadyBeenPupils);
                Console.WriteLine(result);
                Console.WriteLine();
            }
        }
예제 #4
0
        /// <summary>
        /// Rekursijos metodas
        /// </summary>
        /// <param name="pupilsContainer"> Moksleiviu konteineris </param>
        /// <param name="firstPupil"> Pirmojo ieskomo moksleivio vardas </param>
        /// <param name="secondPupil"> Antrojo ieskomo moksleivio vardas </param>
        /// <param name="alreadyKnowTest"> Testas ar jau pažįstamas</param>
        /// <param name="networkList"> Sąrašas, kuriame saugomi tolimesni ryšiai </param>
        /// <param name="removedPupil"> Išimtas moksleivis </param>
        /// <param name="mutualFriends"> Bendri draugai </param>
        /// <returns> Rysio apibudinima </returns>
        static string NetworkResult(PupilsContainer pupilsContainer, string firstPupil, string secondPupil, bool alreadyKnowTest, List <string> networkList, Pupil removedPupil, List <string> mutualFriends,
                                    List <string> alreadyBeenPupils)
        {
            if (networkList.Count != 0) // Tikrina ar ryšių sąrašas tuščias, jei ne tuščias išima moksleivį, kurį pridėjome praeitą kartą kviesdami metodą
            {
                networkList.RemoveAt(0);
            }
            for (int i = 0; i < pupilsContainer.Count; i++)
            {
                if (pupilsContainer.GetPupil(i).Name == firstPupil)
                {
                    if (alreadyKnowTest) // Tikrina ar jau pažįstami
                    {
                        if (FriendsCheck(pupilsContainer.GetPupil(i).Friends, secondPupil))
                        {
                            return("Jau pazistami");
                        }
                        else
                        {
                            alreadyKnowTest = false;
                        }
                    }
                    for (int j = 0; j < pupilsContainer.GetPupil(i).Friends.Count; j++)
                    {
                        if (FirstNetwork(pupilsContainer, pupilsContainer.GetPupil(i).Friends[j], secondPupil))
                        {
                            mutualFriends.Add(pupilsContainer.GetPupil(i).Friends[j]);
                            return($"Bendri pazistami: {string.Join(", ", mutualFriends)}");
                        }

                        if (NetworkList(alreadyBeenPupils, pupilsContainer.GetPupil(i).Friends[j])) // Tikrina ar ryšių sąraše nėra to pačio mokinio
                        {
                            alreadyBeenPupils.Add(pupilsContainer.GetPupil(i).Name);
                            networkList.Add(pupilsContainer.GetPupil(i).Friends[j]);
                        }

                        if (j + 1 == pupilsContainer.GetPupil(i).Friends.Count) // Tikrina ar baigėsi moksleivio draugai
                        {
                            if (networkList.Count != 0)                         // Jeigu ryšių sąraše kažkas yra eina į vidu ir kviečia save
                            {
                                alreadyBeenPupils.Add(pupilsContainer.GetPupil(i).Name);
                                pupilsContainer.RemovePupil(i);
                                return(NetworkResult(pupilsContainer, networkList[0], secondPupil, alreadyKnowTest, networkList, removedPupil, mutualFriends, alreadyBeenPupils));
                            }
                        }
                    }
                }
            }
            return("Negali susipazinti");
        }
예제 #5
0
 // Pridėti moksleivį pagal indeksą
 public void AddPupil(Pupil pupil, int index)
 {
     Pupils[index] = pupil;
 }
예제 #6
0
 // Pridėti moksleivį
 public void AddPupil(Pupil pupil)
 {
     Pupils[Count++] = pupil;
 }