Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Diagnostics;
- using System.Collections;
- namespace lab2v2
- {
- interface IRateAndCopy
- {
- double Raiting { get; }
- object DeepCopy();
- }
- class Person
- {
- private string name;
- private string surname;
- private System.DateTime birthday;
- public Person(string n, string s, System.DateTime b)
- {
- name = n;
- surname = s;
- birthday = b;
- }
- public Person()
- {
- name = "Мария";
- surname = "Краснова";
- birthday = new DateTime(2000, 04, 07);
- }
- public string Name
- {
- get
- {
- return name;
- }
- set
- {
- name = value;
- }
- }
- public string Surname
- {
- get
- {
- return surname;
- }
- set
- {
- surname = value;
- }
- }
- public System.DateTime Birthday
- {
- get
- {
- return birthday;
- }
- set
- {
- birthday = value;
- }
- }
- public int Year
- {
- get
- {
- return birthday.Year;
- }
- set
- {
- birthday = new DateTime(value, birthday.Month, birthday.Day);
- }
- }
- public override string ToString()
- {
- return string.Format("\nИмя: {0}\nФамилия: {1}\nДата рождения: {2}\n", name, surname, birthday);
- }
- public virtual string ToShortString()
- {
- return string.Format("Имя: {0}\nФамилия: {1}\n", name, surname);
- }
- public override bool Equals(object obj)
- {
- if (obj == null)
- {
- return false;
- }
- Person objPers = obj as Person;
- if (obj as Person == null)
- {
- return false;
- }
- return (objPers.Name == this.name && objPers.Surname == this.surname && objPers.birthday == this.birthday);
- }
- public static bool operator ==(Person p1, Person p2)
- {
- return (p1.Name == p2.Name && p1.Birthday == p2.Birthday && p1.Surname == p2.Surname);
- }
- public static bool operator !=(Person p1, Person p2)
- {
- return !(p1 == p2);
- }
- public override int GetHashCode()
- {
- int hashcode = 0;
- char[] NameChar = name.ToCharArray();
- foreach (char ch in NameChar)
- {
- hashcode += Convert.ToInt32(ch);
- }
- char[] SurnameChar = surname.ToCharArray();
- foreach (char ch in SurnameChar)
- {
- hashcode += Convert.ToInt32(ch);
- }
- hashcode += birthday.Year * birthday.Month;
- return hashcode;
- }
- public virtual object DeepCopy()
- {
- Person persCopy = new Person(name, surname, birthday);
- return persCopy;
- }
- }
- enum Frequency { Weekly, Monthly, Yearly };
- class Article : IRateAndCopy
- {
- public Person Avtor { get; set; }
- public string Nazv_Stat { get; set; }
- public double Reiting { get; set; }
- public Article(Person avtor, string nazv, double reiting)
- {
- Avtor = avtor;
- Nazv_Stat = nazv;
- Reiting = reiting;
- }
- public Article()
- {
- Avtor = new Person();
- Nazv_Stat = "Московский Наблюдатель";
- Reiting = 1;
- }
- public override string ToString()
- {
- return string.Format("\nДанные автора статьи: {0}\nНазвание статьи: {1}\nРейтинг статьи: {2}\n", Avtor, Nazv_Stat, Reiting);
- }
- public object DeepCopy()
- {
- return new Article(this.Avtor, this.Nazv_Stat, this.Reiting);
- }
- public double Raiting
- {
- get { return Reiting; }
- }
- }
- class Magazine : Edition,IRateAndCopy
- {
- private string name_magazine;
- private Frequency information_about_period;
- private DateTime date_vihoda;
- private int tirazh;
- //private readonly List<Article> list_stat_in_magazine = new List<Article>();
- private System.Collections.ArrayList spisok_redaktor_magazine = new ArrayList();
- private System.Collections.ArrayList list_stat_in_magazine = new ArrayList();
- public Magazine(string name, Frequency information, DateTime date, int tir)
- {
- name_magazine = name;
- information_about_period = information;
- date_vihoda = date;
- tirazh = tir;
- }
- public Magazine()
- {
- Random rnd = new Random();
- name_magazine = "Имя журнала";
- information_about_period = new Frequency();
- date_vihoda = new DateTime(rnd.Next(2000, 2021), rnd.Next(1, 13), rnd.Next(1, 28));
- tirazh = 10000;
- }
- public System.Collections.ArrayList List_stat_in_magazine
- {
- get
- {
- return list_stat_in_magazine;
- }
- set
- {
- list_stat_in_magazine = value;
- }
- }
- public double Sredn_reiting
- {
- get
- {
- double sum = 0;
- foreach (Article a in list_stat_in_magazine)
- sum += a.Reiting;
- return sum / list_stat_in_magazine.Count;
- }
- }
- public string Name_of_magazine
- {
- get
- {
- return name_magazine;
- }
- set
- {
- name_magazine = value;
- }
- }
- public Frequency Information_about_period
- {
- get
- {
- return information_about_period;
- }
- set
- {
- information_about_period = value;
- }
- }
- public DateTime Date_vihoda
- {
- get
- {
- return date_vihoda;
- }
- set
- {
- date_vihoda = value;
- }
- }
- public int Tirazh
- {
- get
- {
- return tirazh;
- }
- set
- {
- tirazh = value;
- }
- }
- public bool this[Frequency index]
- {
- get
- {
- bool rez;
- if (index == Information_about_period) rez = true;
- else rez = false;
- return rez;
- }
- }
- public void AddArticles(params Article[] list_stat_in_magazine)
- {
- this.list_stat_in_magazine.AddRange(list_stat_in_magazine);
- }
- public override string ToString()
- {
- return "\nНазвание журнала: " + Name_of_magazine + "\nПериодичность выхода журнала: " + Information_about_period +
- "\nДата выхода: " + Date_vihoda + "\nТираж: " + Tirazh + "\nСПИСОК СТАТЕЙ В ЖУРНАЛЕ: " + string.Join("\n", list_stat_in_magazine) + "\nСПИСОК РЕДАКТОРОВ ЖУРНАЛА: " + string.Join("\n", spisok_redaktor_magazine);
- }
- public string ToShortString()
- {
- return "Название журнала: " + Name_of_magazine +
- "\nПериодичность выхода журнала: " + Information_about_period +
- "\nДата выхода: " + Date_vihoda +
- "\nТираж: " + Tirazh +
- "\nCредний рейтинг статьи: " + Sredn_reiting;
- }
- public System.Collections.ArrayList Spisok_redaktor_magazine
- {
- get
- {
- return spisok_redaktor_magazine;
- }
- set
- {
- spisok_redaktor_magazine = value;
- }
- }
- public void AddEditors(params Person[] spisok_redaktor_magazine)
- {
- this.spisok_redaktor_magazine.AddRange(spisok_redaktor_magazine);
- }
- public override object DeepCopy()
- {
- Magazine m = new Magazine(Name_of_magazine, Information_about_period, Date_vihoda, Tirazh);
- m.List_stat_in_magazine = List_stat_in_magazine;
- m.Spisok_redaktor_magazine = Spisok_redaktor_magazine;
- return m;
- }
- public double Raiting
- {
- get
- {
- return Sredn_reiting;
- }
- }
- public Edition getEditionset
- {
- get
- {
- return new Edition(Nazv_izd,Date_vih_izd,Tirazh_izd);
- }
- set
- {
- this.Nazv_izd = value.Nazv_izd;
- this.Date_vih_izd = value.Date_vih_izd;
- this.Tirazh_izd = value.Tirazh_izd;
- }
- }
- public IEnumerable<double> Perebor_stat_s_reiting(double r)
- {
- ArrayList stat_s_reiting_bolshe = new ArrayList();
- bool someBool;
- foreach (Person pers in list_stat_in_magazine)
- {
- someBool = true;
- foreach (Article a in list_stat_in_magazine)
- {
- if (a.Reiting>r)
- {
- someBool = true;
- }
- }
- if (8someBool)
- {
- AutorsWithoutP.Add(pers);
- //Console.WriteLine(pers.ToShortString());
- }
- }
- for (int i = 0; i < AutorsWithoutP.Count; i++)
- {
- yield return (Person)AutorsWithoutP[i];
- //Console.Write(((Person)AutorsWithoutP[i]).ToShortString());
- }
- }
- }
- class Edition
- {
- Random rnd = new Random();
- protected string nazv_izd;
- protected DateTime date_vih_izd;
- protected int tirazh_izd;
- public Edition(string n, DateTime d, int t)
- {
- nazv_izd = n;
- date_vih_izd = d;
- tirazh_izd = t;
- }
- public Edition()
- {
- nazv_izd = "Название издания";
- date_vih_izd = new DateTime(rnd.Next(2000, 2021), rnd.Next(1, 13), rnd.Next(1, 28));
- tirazh_izd = 111;
- }
- public string Nazv_izd
- {
- get
- {
- return nazv_izd;
- }
- set
- {
- nazv_izd = value;
- }
- }
- public DateTime Date_vih_izd
- {
- get
- {
- return date_vih_izd;
- }
- set
- {
- date_vih_izd = value;
- }
- }
- public int Tirazh_izd
- {
- get
- {
- return tirazh_izd;
- }
- set
- {
- tirazh_izd = value;
- }
- }
- public virtual object DeepCopy()
- {
- return new Edition(this.Nazv_izd, this.Date_vih_izd, this.Tirazh_izd);
- }
- public int Tirazh_izdania
- {
- get
- {
- return tirazh_izd;
- }
- set
- {
- if (value <= 0)
- {
- throw new ArgumentOutOfRangeException("Тираж издания должен быть больше 0");
- }
- else
- {
- tirazh_izd = value;
- }
- }
- }
- public override bool Equals(object obj)
- {
- if (obj == null)
- {
- return false;
- }
- Edition objEdition = obj as Edition;
- if (objEdition as Edition == null)
- {
- return false;
- }
- return objEdition.Nazv_izd == this.Nazv_izd && objEdition.Date_vih_izd == this.Date_vih_izd && objEdition.Tirazh_izd == this.Tirazh_izd;
- }
- public static bool operator ==(Edition e1, Edition e2)
- {
- return (e1.Nazv_izd == e2.Nazv_izd && e1.Date_vih_izd == e2.Date_vih_izd && e1.Tirazh_izd == e2.Tirazh_izd);
- }
- public static bool operator !=(Edition e1, Edition e2)
- {
- return !(e1 == e2);
- }
- public virtual new int GetHashCode()
- {
- int HashCode = 0;
- foreach (char ch in Nazv_izd.ToCharArray())
- {
- HashCode += (int)Convert.ToUInt32(ch);
- }
- HashCode += Date_vih_izd.Year * Date_vih_izd.Month;
- HashCode += Tirazh_izd;
- return HashCode;
- }
- public virtual new string ToString()
- {
- return string.Format("\nНазвание издания: {0} \nДата выхода издания: {1} \nТираж изданий: {2}", Nazv_izd, Date_vih_izd, Tirazh_izd);
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- int kolichestvo_person = 3;
- Random rnd = new Random();
- Person[] p = new Person[2 * kolichestvo_person];
- p[0] = new Person("Иван", "Иванов", new DateTime(rnd.Next(1980, 2000), rnd.Next(1, 13), rnd.Next(1, 28)));
- p[1] = new Person("Петр", "Петров", new DateTime(rnd.Next(1980, 2000), rnd.Next(1, 13), rnd.Next(1, 28)));
- p[2] = new Person("Елена", "Сидорова", new DateTime(rnd.Next(1980, 2000), rnd.Next(1, 13), rnd.Next(1, 28)));
- p[3] = new Person("Олег", "Носов", new DateTime(rnd.Next(1980, 2000), rnd.Next(1, 13), rnd.Next(1, 28)));
- p[4] = new Person("Марина", "Геваева", new DateTime(rnd.Next(1980, 2000), rnd.Next(1, 13), rnd.Next(1, 28)));
- p[5] = new Person("Елизавета", "Архипова", new DateTime(rnd.Next(1980, 2000), rnd.Next(1, 13), rnd.Next(1, 28)));
- Article[] a = new Article[2 * kolichestvo_person];
- a[0] = new Article(p[0], "Статья №1", rnd.Next(1, 101));
- a[1] = new Article(p[1], "Статья №2", rnd.Next(1, 101));
- a[2] = new Article(p[2], "Статья №3", rnd.Next(1, 101));
- a[3] = new Article(p[0], "Статья №4", rnd.Next(1, 101));
- a[4] = new Article(p[1], "Статья №5", rnd.Next(1, 101));
- a[5] = new Article(p[2], "Статья №6", rnd.Next(1, 101));
- int kolichestvo_magazine = 2;
- Magazine[] m = new Magazine[kolichestvo_magazine];
- m[0] = new Magazine("Золотое солнышко", (Frequency)rnd.Next(0, 3), new DateTime(rnd.Next(2000, 2021), rnd.Next(1, 13), rnd.Next(1, 28)), rnd.Next(1, 1001));
- m[1] = new Magazine("Московский наблюдатель", (Frequency)rnd.Next(0, 3), new DateTime(rnd.Next(2000, 2021), rnd.Next(1, 13), rnd.Next(1, 28)), rnd.Next(1, 1001));
- Console.WriteLine("\nЗадание №3-4:\n");
- m[0].AddArticles(a[0], a[1], a[2]);
- m[1].AddArticles(a[3], a[4], a[5]);
- for (int i = 0; i < kolichestvo_magazine; i++)
- {
- Console.WriteLine((i + 1) + ") " + m[i].ToString() + "\n");
- }
- Console.WriteLine("\nЗадание №1:\n");
- Console.WriteLine(m[0].ToShortString());
- Console.WriteLine("\nЗадание №2:\n");
- Console.WriteLine("Frequency.Weekly: " + m[0][Frequency.Weekly] + "\nFrequency.Monthly: " + m[0][Frequency.Monthly] + "\nFrequency.Yearly: " + m[0][Frequency.Yearly]);
- Console.WriteLine("\nЗадание №5:\n");
- var odnomer_array = new Article[1000000];
- var sw = Stopwatch.StartNew();
- for (int i = 0; i < 1000000; i++)
- odnomer_array[i] = new Article();
- sw.Stop();
- Console.WriteLine("Время выполнения операций с элементами одномерного массива: ");
- Console.WriteLine(sw.Elapsed);
- var dvum_pryamoug_array = new Article[1000, 1000];
- sw = Stopwatch.StartNew();
- for (int i = 0; i < 1000; i++)
- for (int j = 0; j < 1000; j++)
- dvum_pryamoug_array[i, j] = new Article();
- sw.Stop();
- Console.WriteLine("Время выполнения операций с элементами двумерного прямоугольного массива: ");
- Console.WriteLine(sw.Elapsed);
- var dvum_stup_array = new Article[1000][];
- for (int i = 0; i < dvum_stup_array.Length; i++)
- dvum_stup_array[i] = new Article[1000];
- sw = Stopwatch.StartNew();
- for (int i = 0; i < 1000; i++)
- for (int j = 0; j < 1000; j++)
- dvum_stup_array[i][j] = new Article();
- sw.Stop();
- Console.WriteLine("Время выполнения операций с элементами двумерного ступенчатого массива: ");
- Console.WriteLine(sw.Elapsed);
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement