Sitisom

2 курс Прога лаба 1

Feb 13th, 2020
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.58 KB | None | 0 0
  1. using System;
  2. using System.Diagnostics;
  3. using System.Linq;
  4.  
  5. namespace Лабы_по_проге
  6. {
  7.     //Класс перечисления
  8.     enum Frequency
  9.     {
  10.         Weekly,
  11.         Monthly,
  12.         Yearly
  13.     }
  14.  
  15.     class Article
  16.     {
  17.         //Самостоятельные свойства
  18.         public Person Person { get; set; }
  19.         public string ArticleName { get; set; }
  20.         public double Rating { get; set; }
  21.  
  22.         //Конструкторы класса
  23.         public Article(Person person, string articleName, double rating)
  24.         {
  25.             this.Person = person;
  26.             this.ArticleName = articleName;
  27.             this.Rating = rating;
  28.         }
  29.  
  30.         public Article() : this(new Person(), "Bbeppep", 10d) { }
  31.  
  32.         public override string ToString()
  33.         {
  34.             return "Made by: " + Person + "\n" +
  35.                    "Article Name: " + ArticleName + "\n" +
  36.                    "Rating: " + Rating;
  37.         }
  38.     }
  39.  
  40.     //Класс журнал
  41.     class Magazine
  42.     {
  43.         //Поля класса
  44.         private string magazineName;
  45.         private Frequency frequency;
  46.         private DateTime releaseDate;
  47.         private int quantity;
  48.         private Article[] setOfArticles;
  49.  
  50.         //Свойства класса
  51.         public string MagazineName {
  52.             get { return magazineName; }
  53.             set { magazineName = value; }
  54.         }
  55.         public Frequency Frequency
  56.         {
  57.             get { return frequency; }
  58.             set { frequency = value; }
  59.         }
  60.         public DateTime ReleaseDate
  61.         {
  62.             get { return releaseDate; }
  63.             set { releaseDate = value; }
  64.         }
  65.         public int Quantity
  66.         {
  67.             get { return quantity; }
  68.             set { quantity = value; }
  69.         }
  70.         public Article[] SetOfArticles
  71.         {
  72.             get { return setOfArticles; }
  73.             set { setOfArticles = value; }
  74.         }
  75.  
  76.         //Среднее значение рейтинга
  77.         public double AverageRating
  78.         {
  79.             get
  80.             {
  81.                 double rating = 0;
  82.                 for(int i = 0; i < setOfArticles.Length; i++)
  83.                 {
  84.                     rating += setOfArticles[i].Rating;
  85.                 }
  86.                 return rating / setOfArticles.Length;
  87.             }
  88.         }
  89.  
  90.         //Индексатор
  91.         public bool this [Frequency frequency]
  92.         {
  93.             get { return this.frequency == frequency; }
  94.         }
  95.  
  96.         //Конструкторы класса
  97.         public Magazine(string name, Frequency frequency, DateTime date,
  98.             int quantity, Article[] setOfArticles)
  99.         {
  100.             this.magazineName = name;
  101.             this.frequency = frequency;
  102.             this.releaseDate = date;
  103.             this.quantity = quantity;
  104.             this.setOfArticles = setOfArticles;
  105.         }
  106.  
  107.         public Magazine() : this("new", Frequency.Monthly, new DateTime(1970, 1, 1), 10, new Article[] { }) { }
  108.  
  109.         //Добавление статей
  110.         public void AddArticles(params Article[] articles)
  111.         {
  112.             foreach(var i in articles)
  113.             {
  114.                 setOfArticles.Append(i);
  115.             }
  116.         }
  117.  
  118.         public override string ToString()
  119.         {
  120.             string articles = "";
  121.             foreach(var article in setOfArticles)
  122.             {
  123.                 articles += article.ArticleName + ", ";
  124.             }
  125.             return "Magazin name: " + magazineName + "\n"+
  126.                    "Frequency: " + frequency + "\n" +
  127.                    "Release date: " + releaseDate + "\n" +
  128.                    "Quantity: " + quantity + "\n"+
  129.                    "Articles: " + articles;
  130.         }
  131.  
  132.         public virtual string ToShortString()
  133.         {
  134.             return "Magazin name: " + magazineName + "\n" +
  135.                    "Frequency: " + frequency + "\n" +
  136.                    "Release date: " + releaseDate + "\n" +
  137.                    "Quantity: " + quantity + "\n" +
  138.                    "Average rating: " + AverageRating;
  139.         }
  140.        
  141.     }
  142.  
  143.     class Person
  144.     {
  145.         private string firstName;
  146.         private string lastName;
  147.         private DateTime birthDate;
  148.  
  149.         public string FirstName {
  150.             get { return firstName; }
  151.             set { firstName = value; }
  152.         }
  153.         public string LastName
  154.         {
  155.             get { return lastName; }
  156.             set { lastName = value; }
  157.         }
  158.         public DateTime BirthDate
  159.         {
  160.             get { return birthDate; }
  161.             set { birthDate = value; }
  162.         }
  163.  
  164.         public int GetBirthYear
  165.         {
  166.             get { return birthDate.Year; }
  167.             set { birthDate = new DateTime(value, birthDate.Day, birthDate.Month); }
  168.         }
  169.  
  170.         public Person() : this("Ivan", "Ivanov", new DateTime(1970, 1, 1)) { }
  171.  
  172.         public Person(string firstName, string lastName, DateTime birthDate)
  173.         {
  174.             this.firstName = firstName;
  175.             this.lastName = lastName;
  176.             this.birthDate = birthDate;
  177.         }
  178.  
  179.         public override string ToString()
  180.         {
  181.             return "First Name: " + firstName + "\n" +
  182.                    "Second Name: " + lastName + "\n" +
  183.                    "Birth Date: " + birthDate;
  184.         }
  185.         public virtual string ToShortString()
  186.         {
  187.             return "First Name: " + firstName + "\n" +
  188.                    "Second Name: " + lastName;
  189.         }
  190.     }
  191.     class Program
  192.     {
  193.         static void Main(string[] args)
  194.         {
  195.             Magazine magazine = new Magazine();
  196.  
  197.             magazine.MagazineName = "New";
  198.             magazine.Frequency = Frequency.Yearly;
  199.             magazine.ReleaseDate = new DateTime(2000, 2, 1);
  200.             magazine.Quantity = 10;
  201.             magazine.SetOfArticles = new Article[] { new Article(), new Article() };
  202.  
  203.             Console.WriteLine(magazine.ToShortString());
  204.             magazine.AddArticles(new Article[]
  205.             {
  206.                 new Article(new Person("Adel", "AA", new DateTime(2000, 1, 1)),"Hello", 1),
  207.                 new Article()
  208.             });
  209.             Console.WriteLine("__________________");
  210.             Console.WriteLine(magazine.ToString());
  211.             Console.WriteLine("__________________");
  212.             Console.WriteLine(magazine[Frequency.Monthly]);
  213.             Console.WriteLine("__________________");
  214.  
  215.             //Тестирование массивов Article
  216.             var linearArray = new Article[1000000];
  217.             var rectArray = new Article[1000, 1000];
  218.             var jaggedArray = new Article[1000][];
  219.  
  220.             for (int i = 0; i < jaggedArray.Length; i++)
  221.                 jaggedArray[i] = new Article[1000];
  222.  
  223.             //test1
  224.             var sw = Stopwatch.StartNew();
  225.  
  226.             for (int i = 0; i < 1000000; i++)
  227.                 linearArray[i] = null;
  228.  
  229.             sw.Stop();
  230.             Console.WriteLine(sw.Elapsed);
  231.  
  232.             //test2
  233.             sw = Stopwatch.StartNew();
  234.  
  235.             for (int i = 0; i < 1000; i++)
  236.                 for (int j = 0; j < 1000; j++)
  237.                     rectArray[i, j] = null;
  238.  
  239.             sw.Stop();
  240.             Console.WriteLine(sw.Elapsed);
  241.  
  242.             //test3
  243.             sw = Stopwatch.StartNew();
  244.  
  245.             for (int i = 0; i < 1000; i++)
  246.                 for (int j = 0; j < 1000; j++)
  247.                     jaggedArray[i][j] = null;
  248.  
  249.             sw.Stop();
  250.             Console.WriteLine(sw.Elapsed);
  251.  
  252.         }
  253.     }
  254. }
Add Comment
Please, Sign In to add comment