示例#1
0
 public static int Compare_Birthday(Znak a, Znak b)
 {       //a<b - -1, a == b - 0, a>b - 1;
     if (a.year[2] > b.year[2])
     {
         return(1);
     }
     if (a.year[2] < b.year[2])
     {
         return(-1);
     }
     if (a.year[1] > b.year[1])
     {
         return(1);
     }
     if (a.year[1] < b.year[1])
     {
         return(-1);
     }
     if (a.year[0] > b.year[0])
     {
         return(1);
     }
     if (a.year[0] < b.year[0])
     {
         return(-1);
     }
     return(0);   //якщо рівні
 }
示例#2
0
        static void Swap(ref Znak a, ref Znak b)
        {       //метод міняє місцями записи
            Znak t = a;

            a = b;
            b = t;
        }
示例#3
0
 public static int Compare_Birthday(Znak a, Znak b)
 {	//a<b - -1, a == b - 0, a>b - 1;
     if (a.year[2] > b.year[2]) return 1;
     if (a.year[2] < b.year[2]) return -1;
     if (a.year[1] > b.year[1]) return 1;
     if (a.year[1] < b.year[1]) return -1;
     if (a.year[0] > b.year[0]) return 1;
     if (a.year[0] < b.year[0]) return -1;
     return 0;	//якщо рівні
 }
示例#4
0
 public static int Compare_Znak(Znak a, Znak b)
 {
     if (a.zodiac_signs > b.zodiac_signs)
     {
         return(1);
     }
     if (a.zodiac_signs < b.zodiac_signs)
     {
         return(-1);
     }
     return(0);   //якщо рівні
 }
示例#5
0
        static void Main(string[] args)
        {
            try
            {
                Znak[] z = new Znak[2]; // масив структур
                In_Put(z);              // метод для заповнення
                string w;
                do                      //вводимо за чим нам сортувати
                {
                    Console.WriteLine("The sort will work for (surname, name, znak ,birthdate):");
                    w = Console.ReadLine();
                }while ((w != "name") && (w != "surname") && (w != "znak") && (w != "birthdate"));

                QuickSort(z, 0, z.Length - 1, w);  //  сортування масиву

                for (int i = 0; i < z.Length; i++) // виводимо на екран вже відсортовані данні
                {
                    Console.WriteLine(z[i].ToString());
                }
                Console.WriteLine();
                Console.WriteLine("+++++++++++++++++++++++");
                Console.WriteLine();
                int m;  //змінна місяця
                do
                {
                    Console.WriteLine("enter the month he or she was born:");
                }while ((!int.TryParse(Console.ReadLine(), out m) || (m < 0) || (m > 12)));

                for (int i = 0; i < z.Length; i++)
                {       //проходимо через всі записи і виводимо на екран данні з заданим місяцем
                    if (m == z[i].year[1])
                    {
                        Console.WriteLine(z[i].ToString());
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
示例#6
0
 static void QuickSort(Znak[] a, int L, int R, string w)
 {	//метод сортування
     int i = L; int j = R;//ліва та права межі
     string x;
     switch (w)	//вибираємо, що сортувати
     {
         case "surname":	//якщо за призвіщем
             {
                 x = a[(L + R) / 2].surname;
                 while (string.Compare(a[i].surname, x) < 0) i++;
                 while (string.Compare(a[j].surname, x) > 0) j--;
                 break;
             }
         case "name":	//якщо за ім'ям
             {
                 x = a[(L + R) / 2].name;
                 while (string.Compare(a[i].name, x) < 0) i++;
                 while (string.Compare(a[j].name, x) > 0) j--;
                 break;
             }
         case "znak":	//якщо за знаком
             {
                 while (Znak.Compare_Znak(a[i], a[(L + R) / 2]) < 0) i++;
                 while (Znak.Compare_Znak(a[j], a[(L + R) / 2]) > 0) j--;
                 break;
             }
         case "birthdate":	//за датою народження
             {
                 while (Znak.Compare_Birthday(a[i], a[(L + R) / 2]) < 0) i++;
                 while (Znak.Compare_Birthday(a[j], a[(L + R) / 2]) > 0) j--;
                 break;
             }
         default:
             { throw new Exception("Error"); }	//якщо ні,
     }
     if (i <= j)
     {
         if (i < j) Swap(ref a[i], ref a[j]);
         i++;
         j--;
     }
     if (R > i) QuickSort(a, i, R, w);
     if (L < j) QuickSort(a, L, j, w);
 }
示例#7
0
 public static int Compare_Znak(Znak a, Znak b)
 {
     if (a.zodiac_signs > b.zodiac_signs) return 1;
     if (a.zodiac_signs < b.zodiac_signs) return -1;
     return 0;	//якщо рівні
 }
示例#8
0
        static void Main(string[] args)
        {
            try
            {
                Znak[] z = new Znak[2];// масив структур
                In_Put(z);// метод для заповнення
                string w;
                do //вводимо за чим нам сортувати
                {
                    Console.WriteLine("The sort will work for (surname, name, znak ,birthdate):");
                    w = Console.ReadLine();
                }
                while ((w != "name") && (w != "surname") && (w != "znak") && (w != "birthdate"));

                QuickSort(z, 0, z.Length - 1, w);//  сортування масиву

                for (int i = 0; i < z.Length; i++)// виводимо на екран вже відсортовані данні
                {
                    Console.WriteLine(z[i].ToString());
                }
                Console.WriteLine();
                Console.WriteLine("+++++++++++++++++++++++");
                Console.WriteLine();
                int m;	//змінна місяця
                do
                {
                    Console.WriteLine("enter the month he or she was born:");
                }
                while ((!int.TryParse(Console.ReadLine(), out m) || (m < 0) || (m > 12)));

                for (int i = 0; i < z.Length; i++)
                {	//проходимо через всі записи і виводимо на екран данні з заданим місяцем
                    if (m == z[i].year[1])
                        Console.WriteLine(z[i].ToString());
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
示例#9
0
        public static void In_Put(Znak[] z)
        {
            for (int i = 0; i < z.Length; i++)
            {
                int[] jear = new int[3];
                Console.WriteLine("Enter your surname");
                z[i].surname = Console.ReadLine();



                Console.WriteLine("Enter your name");
                z[i].name = Console.ReadLine();
                bool t = false;
                do
                {
                    Console.WriteLine("Enter your zodiac sign");
                    string s = Console.ReadLine();
                    switch (s)
                    {
                        case "Capricorn":
                            {
                                z[i].zodiac_signs = (int)znak_1.Capricorn;
                                t = true;
                            }
                            break;
                        case "Aquarius":
                            {
                                z[i].zodiac_signs = (int)znak_1.Aquarius;
                                t = true;
                            }
                            break;
                        case "Pisces":
                            {
                                z[i].zodiac_signs = (int)znak_1.Pisces;
                                t = true;
                            }
                            break;
                        case "Aries":
                            {
                                z[i].zodiac_signs = (int)znak_1.Aries;
                                t = true;
                            }
                            break;
                        case "Taurus":
                            {
                                z[i].zodiac_signs = (int)znak_1.Taurus;
                                t = true;
                            }
                            break;
                        case "Gemini":
                            {
                                z[i].zodiac_signs = (int)znak_1.Gemini;
                                t = true;
                            }
                            break;
                        case "Cancer":
                            {
                                z[i].zodiac_signs = (int)znak_1.Cancer;
                                t = true;
                            }
                            break;
                        case "Leo":
                            {
                                z[i].zodiac_signs = (int)znak_1.Leo;
                                t = true;
                            }
                            break;
                        case "Virgo":
                            {
                                z[i].zodiac_signs = (int)znak_1.Virgo;
                                t = true;
                            }
                            break;
                        case "Libra":
                            {
                                z[i].zodiac_signs = (int)znak_1.Libra;
                                t = true;
                            }
                            break;
                        case "Scorpio":
                            {
                                z[i].zodiac_signs = (int)znak_1.Scorpio;
                                t = true;
                            }
                            break;
                        case "Sagittarius":
                            {
                                z[i].zodiac_signs = (int)znak_1.Sagittarius;
                                t = true;
                            }
                            break;
                        default: t = false;
                            break;
                    }
                } while (!t);

                do //поки не введемо правильну дату
                {
                    Console.WriteLine("enter your the day when you were born:");
                }
                while ((!int.TryParse(Console.ReadLine(), out jear[0]) || (jear[0] < 0) || (jear[0] > 31)));
                do
                {
                    Console.WriteLine("enter your the month when you were born:");
                }
                while ((!int.TryParse(Console.ReadLine(), out jear[1]) || (jear[1] < 0) || (jear[1] > 12)));
                do
                {
                    Console.WriteLine("enter your the year when you were born:");
                }
                while (!int.TryParse(Console.ReadLine(), out jear[2]) || (jear[2] < 0));
                z[i].year = jear;
                Console.WriteLine();
            }
        }
示例#10
0
 static void Swap(ref Znak a, ref Znak b)
 {	//метод міняє місцями записи
     Znak t = a;
     a = b;
     b = t;
 }
示例#11
0
        static void QuickSort(Znak[] a, int L, int R, string w)
        {                            //метод сортування
            int    i = L; int j = R; //ліва та права межі
            string x;

            switch (w)      //вибираємо, що сортувати
            {
            case "surname": //якщо за призвіщем
            {
                x = a[(L + R) / 2].surname;
                while (string.Compare(a[i].surname, x) < 0)
                {
                    i++;
                }
                while (string.Compare(a[j].surname, x) > 0)
                {
                    j--;
                }
                break;
            }

            case "name":        //якщо за ім'ям
            {
                x = a[(L + R) / 2].name;
                while (string.Compare(a[i].name, x) < 0)
                {
                    i++;
                }
                while (string.Compare(a[j].name, x) > 0)
                {
                    j--;
                }
                break;
            }

            case "znak":        //якщо за знаком
            {
                while (Znak.Compare_Znak(a[i], a[(L + R) / 2]) < 0)
                {
                    i++;
                }
                while (Znak.Compare_Znak(a[j], a[(L + R) / 2]) > 0)
                {
                    j--;
                }
                break;
            }

            case "birthdate":           //за датою народження
            {
                while (Znak.Compare_Birthday(a[i], a[(L + R) / 2]) < 0)
                {
                    i++;
                }
                while (Znak.Compare_Birthday(a[j], a[(L + R) / 2]) > 0)
                {
                    j--;
                }
                break;
            }

            default:
            { throw new Exception("Error"); }           //якщо ні,
            }
            if (i <= j)
            {
                if (i < j)
                {
                    Swap(ref a[i], ref a[j]);
                }
                i++;
                j--;
            }
            if (R > i)
            {
                QuickSort(a, i, R, w);
            }
            if (L < j)
            {
                QuickSort(a, L, j, w);
            }
        }