Ejemplo n.º 1
0
 // Pridėti moksleivį pagal indeksą
 public void AddPupil(Pupil pupil, int index)
 {
     Pupils[index] = pupil;
 }
Ejemplo n.º 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>
        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 (StreamWriter writer = new StreamWriter(Server.MapPath(resultsFile)))
            {
                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(pupilsContainerCopy, friend.FirstFriend, friend.SecondFriend, alreadyKnowTest, networkList, removedPupil, mutualFriends, alreadyBeenPupils);
                    writer.WriteLine($"{friend.PrintNetworkToReportTable()} {result,-40} |");
                }
                writer.WriteLine(new string('-', 119));
            }
        }
Ejemplo n.º 3
0
 // Pridėti moksleivį
 public void AddPupil(Pupil pupil)
 {
     Pupils[Count++] = pupil;
 }
Ejemplo n.º 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");
        }