示例#1
0
        //Слияние двух колец в одно
        public static Kolco Merge(Kolco k, Kolco k2)
        {
            //Считываем со второго кольца и добавляем к первому
            foreach(Chelovek chel in k2.people)
                k.people.Add(chel);

            return k;
        }
示例#2
0
        //Сортировка кольца
        public static void Sorting(ref Kolco k)
        {
            k.people.Sort();


            //Работа делегата реализована на примере http://msdn.microsoft.com/ru-ru/library/b0zbh7b6.aspx) - для работы сортировки кольца на основании возраста
            k.people.Sort(delegate(Chelovek x, Chelovek y)
            {
                if (x.vozrast == 0 && y.vozrast == 0) return 0;
                else if (x.vozrast == 0) return -1;
                else if (y.vozrast == 0) return 1;
                else return x.vozrast.CompareTo(y.vozrast);
            });
        }
示例#3
0
 //Удаление каждого к-го элемента
 public static void Deleting_k(ref Kolco kolco, int k)
 {
     //Резервируем переменную
     int kol;//Для переменной к
     int z = 0;
     //Пока не останется один элемент - удаляем по 1 штуке за прогон по кольцу
     while (kolco.people.Count() > 1)
     {
         kol = k+z;
         //Предупреждаем вариант, когда k больше количества элементов в списке
         while (kol >= kolco.people.Count())
             kol = kol - kolco.people.Count();
         kolco.people.RemoveAt(kol);
         z = kol;//Чтобы начать отсчет с номера того элемента, который удалили
     }
 }
示例#4
0
        public static Kolco Coding(StreamReader rd)//Считывание с файла
        {
            Kolco k = new Kolco();//Переменная для результата
            string str="";//Считываем пол
            int vozr=0;//Считываем возраст

            while(!rd.EndOfStream)
            {
                    //Считываем данные
                    str = rd.ReadLine().ToString();
                    vozr = int.Parse(rd.ReadLine().ToString());
                    //Создаем человека
                    
                    //Добавляем в кольцо
                    k.people.Add(new Chelovek(str.ToString(), vozr));
            }
            return k;
        }
示例#5
0
 public static void Write(Kolco k, StreamWriter wr)//Вывод данных списка 
 {//sc - список, wr - поток для печати
     wr.WriteLine("Печать полученного списка: " + Instruments.Decoding(k));
     wr.WriteLine();
 }
示例#6
0
 public static void Read(ref Kolco k, StreamReader rd)//Считывание числа из файла:
 {
     k = Instruments.Coding(rd);
 }
示例#7
0
 //Деление на 2 кольца мужчин и женщин
 public static void Separe(Kolco M, Kolco W, Kolco k)
 {
     //Считываем с базового кольца и распределяем по спискам
     foreach (Chelovek chel in k.people)
     {
         if (chel.s.CompareTo("M") == 0)
         //Если мужчина - в список мужчин
             M.people.Add(chel);
         //иначе - в список женщин
         else
             W.people.Add(chel);
     }
 }
示例#8
0
 public static void Delete(ref Kolco sc)//Уничтожение списков:
 {//sc - Освобождаемый класс
     sc.people.Clear();
     sc.people = null;
 }
示例#9
0
 public static string Decoding(Kolco k)//Построение вывода числа
 {
     return k.ToString();
 }
示例#10
0
文件: Program.cs 项目: GarageInc/all
        static void Main(string[] args)
        {
            StreamReader rd1 = new StreamReader("spisok1.txt", Encoding.GetEncoding("Windows-1251"));//Файл для считывания данных в первый список
            StreamReader rd2 = new StreamReader("spisok2.txt", Encoding.GetEncoding("Windows-1251"));//Файл для считывания данных во второй список
            StreamWriter wr = new StreamWriter("output.txt");//Файл для записи результатов

            Kolco k = new Kolco();
            
            int n = 0;
            while (n != 5)
            {
                n = Visualisation.Choice();//Выбираем выполняемое действие
                if (n != 5)//Если не выбрали выход
                {
                    //Считываем в список
                    Visualisation.Read(ref k, rd1);

                    Visualisation.Write(k, wr);

                    switch(n)//Выполняем требуемое действие
                    {
                        case 1:
                        {
                            Instruments.Sorting(ref k);
                            wr.WriteLine("РЕЗУЛЬТАТ СОРТИРОВКИ:");
                            Visualisation.Write(k, wr);
                        }
                        break;
                        case 2:
                        {
                            Console.WriteLine("Какой каждый к-ый элемент удалить? Введите число к = ");
                            int el;
                            el=int.Parse(Console.ReadLine());
                            Instruments.Deleting_k(ref k, el);
                            wr.WriteLine("РЕЗУЛЬТАТ УДАЛЕНИЯ КАЖДОГО К-го УЧАСТНИКА:");
                            Visualisation.Write(k, wr);
                        }
                        break;
                        case 3:
                        {
                            Kolco k2 = new Kolco();//Второе кольцо
                            //Считываем во второй список
                            Visualisation.Read(ref k2, rd2);

                            wr.WriteLine("Второй список. ");
                            Visualisation.Write(k2, wr);

                            wr.WriteLine("РЕЗУЛЬТАТ ПОСТРОЕНИЯ НОВОГО СПИСКА ИЗ УЖЕ ИМЕЮЩИХСЯ ДВУХ:");
                            Kolco k3 = Instruments.Merge(k, k2);//Слияние; слияние 1 и 2 ( в первое кольцо добавляются элементы 2го)
                            Instruments.Delete(ref k2);//Удаляем ненужный список
                            
                            Visualisation.Write(k3, wr);
                            
                        }
                        break;
                        case 4:
                        {
                            Kolco M = new Kolco();//Будущий список только мужчин
                            Kolco W = new Kolco();//Будущий список только женщин

                            Instruments.Separe(M, W, k);//Фунция деления на два списка
                            wr.WriteLine("РЕЗУЛЬТАТ ДЕЛЕНИЯ НА ДВА СПИСКА-КОЛЬЦА(по мужчинам и женщинам):");
                            Visualisation.Write(M, wr);
                            Visualisation.Write(W, wr);

                            Instruments.Delete(ref M);//Удаляем списки, т.к. больше не используются
                            Instruments.Delete(ref W);
                        }
                        break;
                    }
                }
                
            }
            Instruments.Delete(ref k);//Удаляем ненужный список
            wr.Close();//Иначе - закрываем потоки
            rd1.Close();
            rd2.Close();
        }