Advertisement
Pearlfromsu

s3l1

Sep 19th, 2022
1,034
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 15.31 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace OOP_130922 {
  8.     //Кротов Сергей КБ-21СО Лабораторная №1 Вариант 9. Печатное издание
  9.     enum PrintedMatterType {
  10.         book,
  11.         magazine,
  12.         booklet,
  13.         brochure,
  14.         newspaper
  15.     }
  16.     enum Language {
  17.         English,
  18.         Russian,
  19.         Deutsch,
  20.         Japanese
  21.     }
  22.     class PrintedMatter {
  23.         string _name; //название печатного издания
  24.         string _author; //автор, издательство, ....
  25.         string _contents; //текст печатного издания
  26.         string _owner; //текст печатного издания
  27.         int _pagesCount; //количество страниц
  28.         Language _lang; //язык
  29.         PrintedMatterType _type; //тип печатного издания
  30.         DateTime _printDate; //год(дата) издания
  31.  
  32.         public string Name { //название печатного издания
  33.             get {
  34.                 return _name;
  35.             }
  36.             private set {
  37.                 if (string.IsNullOrEmpty(value)) {
  38.                     Console.WriteLine("Установлено значение по умолчанию");
  39.                     _name = "Unknown";
  40.                 } else
  41.                     _name = value;
  42.             }
  43.         }
  44.  
  45.         public string Author { //автор, издательство, ....
  46.             get {
  47.                 return _author;
  48.             }
  49.             private set {
  50.                 if (string.IsNullOrEmpty(value)) {
  51.                     Console.WriteLine("Установлено значение по умолчанию");
  52.                     _author = "Unknown author";
  53.                 } else
  54.                     _author = value;
  55.             }
  56.         }
  57.  
  58.         public string Contents { //текст печатного издания
  59.             get {
  60.                 return _contents;
  61.             }
  62.             private set { //никто не должен менять содержание книги
  63.                 if (string.IsNullOrEmpty(value)) {
  64.                     this.logError("Не введено содержание издания. Пересоздайте объект");
  65.                     _contents = "";
  66.                 } else
  67.                     _contents = value;
  68.             }
  69.         }
  70.  
  71.         public string Owner { //текст печатного издания
  72.             get {
  73.                 return _owner;
  74.             }
  75.             set { //никто не должен менять содержание книги
  76.                 if (string.IsNullOrEmpty(value)) {
  77.                     this.logError("Не введен владелец издания. Пересоздайте объект");
  78.                     _owner = "";
  79.                 } else
  80.                     _owner = value;
  81.             }
  82.         }
  83.  
  84.         public int PagesCount { //количество страниц
  85.             get {
  86.                 return _pagesCount;
  87.             }
  88.             private set { //невозможно добавить или убрать страницы книги после печати
  89.                 if (value <= 0) {
  90.                     Console.WriteLine("Установлено значение по умолчанию");
  91.                     _pagesCount = 1; //как минимум одна страница, чтобы держать в руках
  92.                 } else
  93.                     _pagesCount = value;
  94.             }
  95.         }
  96.  
  97.         private void logError(string msg) {
  98.             Console.ForegroundColor = ConsoleColor.Red;
  99.             Console.WriteLine($"Ошибка в классе {this.GetType()}: {msg}");
  100.             Console.ForegroundColor = ConsoleColor.White;
  101.         }
  102.  
  103.         public DateTime PrintDate { //год(дата) издания
  104.             get {
  105.                 return _printDate;
  106.             }
  107.             private set {
  108.                 if (_printDate > DateTime.Now) { //нельзя напечатать издание в будущем
  109.                     Console.WriteLine("Установлена текущая дата изданию");
  110.                     _printDate = DateTime.Now;
  111.                 } else
  112.                     _printDate = value;
  113.             }
  114.         }
  115.  
  116.        
  117.  
  118.         //когда конструктора ни одного нет - компилятор добавляет пустой(по умолчанию)
  119.         //когда появляется хотя бы один, конструктор по умолчанию нужно задавать уже вручную
  120.         //конструктор по умолчанию автоматически происвоит значимым полям 0, ссылочным - NULL
  121.  
  122.         public PrintedMatter(string name, string author, string contents, string owner, int pagesCount, Language lang, PrintedMatterType type, DateTime printDate) {
  123.             _name = name; //название печатного издания
  124.             _author = author; //автор, издательство, ....
  125.             _contents = contents; //текст печатного издания
  126.             _owner = owner; //владелец книги
  127.             _pagesCount = pagesCount; //количество страниц
  128.             _lang = lang; //язык
  129.             _type = type; //тип печатного издания
  130.             _printDate = printDate; //год(дата) издания
  131.         }
  132.  
  133.         public PrintedMatter(string name, string author, string contents) : this(name, author, contents, "Библиотека ЯрГУ", 1, Language.Russian, PrintedMatterType.book, DateTime.Now) { }
  134.  
  135.         public PrintedMatter() : this("Unknown book", "Unknown author", "Empty page") { }
  136.  
  137.         public int getWordsCount() {
  138.             int cnt = 0, letters = 0;
  139.             for (int i = 0; i < _contents.Length; i++) {
  140.                 if (char.IsLetterOrDigit(_contents[i]))
  141.                     letters++;
  142.                 else {
  143.                     if (letters > 0)
  144.                         cnt++;
  145.                     letters = 0;
  146.                 }
  147.             }
  148.             if (letters > 0)
  149.                 cnt++;
  150.             return cnt;
  151.         }
  152.         public void printInfo() {
  153.             Console.WriteLine($"Автор издания: {_author}");
  154.             Console.WriteLine($"Название: {_name}");
  155.             Console.WriteLine($"Тип: {_type}");
  156.             Console.WriteLine($"Язык: {_lang}");
  157.             Console.WriteLine($"Количество страниц: {_pagesCount}");
  158.             Console.WriteLine($"Год(дата) печати: {_printDate.ToString("dd.MM.yyyy HH:mm")}");
  159.         }
  160.  
  161.         public void printContents() {
  162.             Console.WriteLine($"Содержание издания “{_name}”:");
  163.             Console.ForegroundColor = ConsoleColor.Yellow;
  164.             Console.WriteLine(Contents);
  165.             Console.ForegroundColor = ConsoleColor.White;
  166.         }
  167.  
  168.         public override string ToString() {
  169.             return string.Format("{0} \"{1}\"", _author, _name);
  170.         }
  171.  
  172.         public static bool operator >(PrintedMatter t1, PrintedMatter t2) {
  173.             return t1.getWordsCount() > t2.getWordsCount();
  174.         }
  175.         public static bool operator <(PrintedMatter t1, PrintedMatter t2) {
  176.             return t1.getWordsCount() < t2.getWordsCount();
  177.         }
  178.         public static bool operator <=(PrintedMatter t1, PrintedMatter t2) {
  179.             return t1.getWordsCount() <= t2.getWordsCount();
  180.         }
  181.         public static bool operator >=(PrintedMatter t1, PrintedMatter t2) {
  182.             return t1.getWordsCount() >= t2.getWordsCount();
  183.         }
  184.         public static bool operator ==(PrintedMatter t1, PrintedMatter t2) {
  185.             return t1.getWordsCount() == t2.getWordsCount();
  186.         }
  187.         public static bool operator !=(PrintedMatter t1, PrintedMatter t2) {
  188.             return t1.getWordsCount() != t2.getWordsCount();
  189.         }
  190.     }
  191.  
  192.     class Program {
  193.         static void Main(string[] args) {
  194.             //contents = "     iodfj fdjio ler k  ааббб..куаы/341 ";
  195.  
  196.  
  197.             var EmptyBook = new PrintedMatter();
  198.  
  199.             EmptyBook.printInfo();
  200.             Console.WriteLine();
  201.             EmptyBook.printContents();
  202.  
  203.             Console.WriteLine();
  204.             Console.WriteLine();
  205.             Console.WriteLine();
  206.  
  207.             string contents = "Компьютерное издательство “Диалектика”\nПеревод с английского и редакция Ю.Н.Артеменко\nПо общим вопросам обращайтесь в издательство “Диалектика” по адресу:\ninfo @dialektika.com, http:\nТроелсен, Эндрю, Джепикс, Филипп.Т70 Язык программирования C# 7 и платформы .NET и .NET Core, 8-е изд. : Пер. с\nангл. — СПб. : ООО “Диалектика”, 2018 — 1328 с. : ил. — Парал.тит.англ.\nISBN 978 - 5 - 6040723 - 1 - 8(рус.)\nББК 32.973";
  208.  
  209.             var Csharp = new PrintedMatter(
  210.                 "Язык программирования C# 7 и платформы .NET и .NET Core ",
  211.                 "Троелсен, Джепикс",
  212.                 contents,
  213.                 "Библиотека ЯрГУ",
  214.                 1330,
  215.                 Language.Russian,
  216.                 PrintedMatterType.book,
  217.                 new DateTime(2018, 1, 1, 1, 0, 0)
  218.             );
  219.  
  220.             Csharp.printContents();
  221.             Console.WriteLine();
  222.             Csharp.printInfo();
  223.  
  224.             Console.WriteLine();
  225.             Console.WriteLine();
  226.  
  227.             var GoodBook = new PrintedMatter("Suvmer's book", "Кротов Сергей", "My profile on github: https://github.com/suvmer"); //8 words
  228.  
  229.             GoodBook.printContents();
  230.             Console.WriteLine();
  231.             GoodBook.printInfo();
  232.             Console.WriteLine();
  233.             Console.WriteLine($"Владелец книги {GoodBook.Name}: {GoodBook.Owner}");
  234.             GoodBook.Owner = "";
  235.             GoodBook.Owner = "Сергей Кротов";
  236.             Console.WriteLine($"Книга {GoodBook.Name} перешла во владение человеку: {GoodBook.Owner}");
  237.  
  238.             Console.WriteLine();
  239.             Console.WriteLine($"Количество слов в тексте книги  {Csharp}:");
  240.             Console.WriteLine(Csharp.getWordsCount());
  241.  
  242.             Console.WriteLine($"Количество слов в тексте книги  {GoodBook}:");
  243.             Console.WriteLine(GoodBook.getWordsCount());
  244.  
  245.             Console.ForegroundColor = ConsoleColor.Yellow;
  246.             if (GoodBook > Csharp) {
  247.                 Console.WriteLine($"Книга автора {GoodBook.Author} больше по словам, чем книга {Csharp.Name}");
  248.             } else if (GoodBook == Csharp) {
  249.                 Console.WriteLine($"У книг одинаковое количество слов");
  250.             } else {
  251.                 Console.WriteLine($"Наибольшее количество слов в книге {Csharp.Name}");
  252.             }
  253.             Console.ForegroundColor = ConsoleColor.White;
  254.  
  255.  
  256.             Console.ReadKey();
  257.         }
  258.     }
  259. }
  260.  
  261.             //вместо var компилятор подставит Student
  262.             /*misha._fio = "Бабкевич Михаил";
  263.             misha._groupName = "KB-21";
  264.             misha._status = "academ";
  265.             misha._number = 123456;*
  266.  
  267.  
  268.             Console.WriteLine(misha);
  269.             Console.WriteLine(vasya);
  270.  
  271.             Console.WriteLine(misha.GetType());
  272.             Console.WriteLine(misha.GetHashCode());
  273.             Console.WriteLine(vasya.GetHashCode());
  274.             Console.WriteLine(misha.Equals(vasya));
  275.             Console.ReadKey();
  276.         }
  277.     }
  278. }
  279.  
  280.  
  281.  
  282.  
  283. /*
  284. using System;
  285. using System.Collections.Generic;
  286. using System.Linq;
  287. using System.Text;
  288. using System.Threading.Tasks;
  289.  
  290. namespace OOP_130922 {
  291.     //Кротов Сергей КБ-21СО Лабораторная №1 Вариант 9. Печатное издание
  292.     enum ChallengeType {
  293.         Exam,
  294.         Test
  295.     }
  296.     class Challenge {
  297.  
  298.         ChallengeType _type; //тип испытания(экзамен, зачёт)
  299.         int _day; //день проведения
  300.         int _month; //месяц
  301.         string _handler; //проводящий экзамен
  302.         List<string> _members; //участники экзамена
  303.         List<int> _marks; //участники экзамена
  304.  
  305.         //Challenge primer = new ...
  306.         //primer.Day = 5; //работает set
  307.         //Console.WriteLine(primer.Day); //работает get
  308.         //
  309.         public int Day { //день испытания
  310.             get {
  311.                 return _day;
  312.             }
  313.             set {
  314.                 if (value > 31 || value < 1) {
  315.                     Console.WriteLine("Введён неверный день. Пересоздайте объект");
  316.                 } else
  317.                     _day = value;
  318.             }
  319.         }
  320.         public int Month { //месяц испытания
  321.             get {
  322.                 return _month;
  323.             }
  324.             set {
  325.                 if (value > 12 || value < 1) {
  326.                     Console.WriteLine("Введён неверный месяц. Пересоздайте объект");
  327.                 } else
  328.                     _month = value;
  329.             }
  330.         }
  331.  
  332.         public string Handler { //Проводящий испытание
  333.             get {
  334.                 return _handler;
  335.             }
  336.             set {
  337.                 if (string.IsNullOrEmpty(value)) {
  338.                     Console.WriteLine("Не введён проводящий испытание. Пересоздайте объект");
  339.                 } else
  340.                     _handler = value;
  341.             }
  342.         }
  343.         //"List<string>"
  344.         public List<string> Members { //Проводящий испытание
  345.             get {
  346.                 return _members;
  347.             }
  348.             set {
  349.                 bool fl = false;
  350.                 for (int i = 0; i < value.Count; i++) {
  351.                     if (string.IsNullOrEmpty(value[i])) {
  352.                         fl = true;
  353.                         break;
  354.                     }
  355.                 }
  356.                 if (fl) {
  357.                     Console.WriteLine("Некорректный список участников испытания. Пересоздайте объект");
  358.                 } else
  359.                     _members = value;
  360.             }
  361.         }
  362.  
  363.         public List<int> Marks { //Проводящий испытание
  364.             get {
  365.                 return _marks;
  366.             }
  367.             set {
  368.                 bool fl = false;
  369.                 for (int i = 0; i < value.Count; i++) {
  370.                     if (value[i] < 2 || value[i] > 5) {
  371.                         fl = true;
  372.                         break;
  373.                     }
  374.                 }
  375.                 if (fl) {
  376.                     Console.WriteLine("Некорректный список результатов участников испытания. Пересоздайте объект");
  377.                 } else
  378.                     _marks = value;
  379.             }
  380.         }
  381.  
  382.         public Challenge(ChallengeType type, int day, int month, string handler = "ЯрГУ", List<string> members = null, List<int> marks = null) {
  383.             if (members == null)
  384.                 members = new List<string>();
  385.             if (marks == null)
  386.                 marks = new List<int>();
  387.            
  388.             this._type = type; //тип испытания(экзамен, зачёт)
  389.             this.Day = day; //день проведения
  390.             this.Month = month; //месяц
  391.             this.Handler = handler; //проводящий экзамен
  392.             this.Members = members; //участники экзамена
  393.             this.Marks = marks; //оценки участников
  394.         }
  395.  
  396.         public Challenge() : this(ChallengeType.Exam, 1, 1) { }
  397.  
  398.         public void addMemberWithMark(string name, int mark) {
  399.             if (string.IsNullOrEmpty(name)) {
  400.                 Console.WriteLine("Пустое имя");
  401.                 return;
  402.             }
  403.             if (mark < 2 || mark > 5) {
  404.                 Console.WriteLine("Некорректная оценка");
  405.                 return;
  406.             }
  407.             _members.Add(name);
  408.             _marks.Add(mark);
  409.         }
  410.        
  411.         public void printMembers() {
  412.             //String.Join("\n", _members);
  413.             Console.WriteLine("Список участников испытания: ");
  414.             foreach (string name in _members)
  415.                 Console.WriteLine(name);
  416.         }
  417.  
  418.  
  419.         public override string ToString() {
  420.             return string.Format("{0}: ({1}.{2})", _type, Day, Month);
  421.         }
  422.         //Challenge ch1, ch2;
  423.         //if(ch1 > ch2)
  424.         public static bool operator >(Challenge t1, Challenge t2) {
  425.             return t1.Day > t2.Day;
  426.         }
  427.         public static bool operator <(Challenge t1, Challenge t2) {
  428.             return t1.Day < t2.Day;
  429.         }
  430.         public static bool operator <=(Challenge t1, Challenge t2) {
  431.             return t1.Day <= t2.Day;
  432.         }
  433.         public static bool operator >=(Challenge t1, Challenge t2) {
  434.             return t1.Day >= t2.Day;
  435.         }
  436.     }
  437.     class Program {
  438.         static void Main(string[] args) {
  439.             List<string> names = new List<string>() { "Misha", "Gosha", "Masha" };
  440.             List<int> marks = new List<int>() { 5, 3, 4 };
  441.             var misha = new Challenge(ChallengeType.Test, 20, 9, "Артём", names, marks);
  442.             var vasya = new Challenge();
  443.            
  444.  
  445.  
  446.             //вместо var компилятор подставит Student
  447.             /*misha._fio = "Бабкевич Михаил";
  448.             misha._groupName = "KB-21";
  449.             misha._status = "academ";
  450.             misha._number = 123456;*
  451.  
  452.  
  453.             Console.WriteLine(misha);
  454.             Console.WriteLine(vasya);
  455.  
  456.             Console.WriteLine(misha.GetType());
  457.             Console.WriteLine(misha.GetHashCode());
  458.             Console.WriteLine(vasya.GetHashCode());
  459.             Console.WriteLine(misha.Equals(vasya));
  460.             Console.ReadKey();
  461.         }
  462.     }
  463. }
  464.  
  465. */
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement