public Znak(Znak a)// конструктор з параметрами { this.surname = a.surname; this.name = a.name; this.zodiac_signs = a.zodiac_signs; this.jear = a.jear; }
public static int Compare_Birthday(Znak a, Znak b) { //a<b - -1, a == b - 0, a>b - 1; if (a.jear[2] > b.jear[2]) { return(1); } if (a.jear[2] < b.jear[2]) { return(-1); } if (a.jear[1] > b.jear[1]) { return(1); } if (a.jear[1] < b.jear[1]) { return(-1); } if (a.jear[0] > b.jear[0]) { return(1); } if (a.jear[0] < b.jear[0]) { return(-1); } return(0); //якщо рівні }
private void Swap(ref Znak a, ref Znak b) { //метод міняє місцями записи Znak t = a; a = b; b = t; }
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); //якщо рівні }
private void QuickSort(Znak[] a, int L, int R, Compare w) { //метод сортування int i = L; int j = R;//ліва та права межі while (w(a[i], a[(L + R) / 2]) < 0) i++; while (w(a[j], a[(L + R) / 2]) > 0) j--; 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); }
public Znak[] Add(Znak a) { int i = 0; while (i < this.mas.Length) { if (this[i].surname == null) { this[i] = a; break; } i++; } return this.mas; }
public Znak[] Add(Znak a) { int i = 0; while (i < this.mas.Length) { if (this[i].surname == null) { this[i] = a; break; } i++; } return(this.mas); }
static void Main(string[] args) { try { Znak[] z = new Znak[3]; // масив структур In_Put(z); // метод для заповнення Conteiner test = new Conteiner(z); int[] birth = new int[3] { 20, 9, 1995 }; Znak newnote = new Znak("Sem", "Matvienko", 2, birth); test.Add(newnote); test.Sort(Znak.Compare_Surname_Name_Znak_Birthday, z); Console.WriteLine(""); test.Display(); //for (int i = 0; i < z.Length; i++)// виводимо на екран вже відсортовані данні //{ // Console.WriteLine(z[i].ToString()); //} Console.WriteLine("Surname Name Znak Birthday"); 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].jear[1]) { Console.WriteLine(z[i].ToString()); } } } catch (Exception e) { Console.WriteLine(e.Message); } }
public static int Compare_Surname_Name_Znak_Birthday(Znak a, Znak b)// порівнюємо спочатку за прізвищем за імям знаком та за датою народження { if (Compare_Surmane(a, b) != 0) { return(Compare_Surmane(a, b)); } if (Compare_Name(a, b) != 0) { return(Compare_Name(a, b)); } if (Compare_Znak(a, b) != 0) { return(Compare_Znak(a, b)); } if (Compare_Birthday(a, b) != 0) { return(Compare_Birthday(a, b)); } return(0); }
public Conteiner(Znak[] mas)// конструктор { this.mas = mas; }
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; //якщо рівні }
public static int Compare_Name(Znak a, Znak b)// порівнюємо за імям { return(string.Compare(a.name, b.name)); }
public static int Compare_Surmane(Znak a, Znak b)// порівнює за прізвище { return(string.Compare(a.surname, b.surname)); }
public static int Compare_Surmane(Znak a, Znak b)// порівнює за прізвище { return string.Compare(a.surname, b.surname); }
public static int Compare_Name(Znak a, Znak b)// порівнюємо за імям { return string.Compare(a.name, b.name); }
public static int Compare_Surname_Name_Znak_Birthday(Znak a, Znak b)// порівнюємо спочатку за прізвищем за імям знаком та за датою народження { if (Compare_Surmane(a, b) != 0) return Compare_Surmane(a, b); if (Compare_Name(a, b) != 0) return Compare_Name(a, b); if (Compare_Znak(a, b) != 0) return Compare_Znak(a, b); if (Compare_Birthday(a, b) != 0) return Compare_Birthday(a, b); return 0; }
public static int Compare_Birthday(Znak a, Znak b) { //a<b - -1, a == b - 0, a>b - 1; if (a.jear[2] > b.jear[2]) return 1; if (a.jear[2] < b.jear[2]) return -1; if (a.jear[1] > b.jear[1]) return 1; if (a.jear[1] < b.jear[1]) return -1; if (a.jear[0] > b.jear[0]) return 1; if (a.jear[0] < b.jear[0]) return -1; return 0; //якщо рівні }
public static void In_Put(Znak[] z) { for (int i = 0; i < z.Length - 1 ; 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 jear when you were born:"); } while (!int.TryParse(Console.ReadLine(), out jear[2]) || (jear[2] < 0)); z[i].jear = jear; Console.WriteLine(); } }
static void Main(string[] args) { try { Znak[] z = new Znak[3];// масив структур In_Put(z);// метод для заповнення Conteiner test = new Conteiner(z); int[] birth = new int[3] { 20, 9, 1995 }; Znak newnote = new Znak("Sem", "Matvienko", 2, birth); test.Add(newnote); test.Sort(Znak.Compare_Surname_Name_Znak_Birthday, z); Console.WriteLine(""); test.Display(); //for (int i = 0; i < z.Length; i++)// виводимо на екран вже відсортовані данні //{ // Console.WriteLine(z[i].ToString()); //} Console.WriteLine("Surname Name Znak Birthday"); 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].jear[1]) Console.WriteLine(z[i].ToString()); } } catch (Exception e) { Console.WriteLine(e.Message); } }
public void Sort(Compare w, Znak[] mass)//метод який доступній зовні { this.QuickSort(mass, 0, mass.Length - 1, w);//сотрування }